我有一个联系表单,我有一些由bean验证验证的字段,如何在提交后返回bean验证错误消息?
例如:
<h:form>
<h:inputText id="name" value="#{contact.client.name}"></h:inputText>Name (Required)
<h:inputText id="email" value="#{contact.client.email}"></h:inputText>E-Mail (Required)
<h:inputText id="website" value="#{contact.client.website}"></h:inputText>Website (Optional)
<h:inputText id="text" value="#{contact.client.text}"></h:inputText>Message (Required):
<h:commandButton value="Send" action="#{contact.sendMessage}" >
<f:ajax execute="@form" render="@form"/>
</h:commandButton>
</h:form>
Run Code Online (Sandbox Code Playgroud)
这就是我验证字段的方式:
// Client.java (model)
@NotNull(message="Please provide your name")
private String name;
@NotNull(message="Please provide your email")
@Pattern(regexp = "([^.@]+)(\\.[^.@]+)*@([^.@]+\\.)+([^.@]+)", message = "Invalid e-mail")
private String email;
@Pattern(regexp = "(http[s]?://|ftp://)?(www\\.)?[a-zA-Z0-9-\\.]+\\.([a-zA-Z]{2,5})$", message = "Not valid URL")
private String website;
@NotNull(message="Please provide your message")
private String text;
Run Code Online (Sandbox Code Playgroud) 我在Spring项目中一直使用Hibernate Validator.我即将JUser自动验证我的对象.即,我希望Spring验证对象并在BindigResult中设置错误.但它不起作用.
<properties>
<spring.version>4.3.5.RELEASE</spring.version>
<spring.security.version>4.0.2.RELEASE</spring.security.version>
<hibernate.version>4.3.11.Final</hibernate.version>
<validation-api.version>1.1.0.Final</validation-api.version>
<hibernate-validator.version>5.4.0.Final</hibernate-validator.version>
</properties>
....
Run Code Online (Sandbox Code Playgroud)
...
<tx:annotation-driven transaction-manager="hibernateTransactionManager"/>
<context:annotation-config />
<context:component-scan base-package="my.project.controller" />
<mvc:annotation-driven validator="validator">
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="classpath:messages"/>
</bean>
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
</bean>
<bean class="org.springframework.validation.beanvalidation.MethodValidationPostProcessor">
<property name="validator" ref="validator"/>
</bean>
<bean id="localeResolver"
class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
<property name="defaultLocale" value="en" />
</bean>
Run Code Online (Sandbox Code Playgroud)
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import org.hibernate.validator.constraints.NotEmpty;
@Entity
public class JUser implements Officeable {
@Id
private Long id;
@Column(unique = true, nullable = false)
private String username;
private …Run Code Online (Sandbox Code Playgroud) validation spring spring-mvc hibernate-validator spring-validator
我正在使用带有JSF 2的spring 3,并且我用spring bean替换了JSF托管bean,通过在bean的顶部添加:
@Component("mybean")
@Scope("session")
Run Code Online (Sandbox Code Playgroud)
在我的bean中,我正在自动装配一个spring服务(使用注释@service声明)
好吧,一切都运行良好的服务,但当我试图停止tomcat 6,我得到这个例外与我的春季服务
java.io.NotSerializableException
Run Code Online (Sandbox Code Playgroud)
任何想法为什么我得到这个例外,以及如何解决它.
更新:
在使我的服务实现可序列化后,有时我得到以下异常:
java.lang.IllegalStateException: Cannot deserialize BeanFactory with id org.springframework.web.context.WebApplicationContext:/spring_faces: no factory registered for this id
at org.springframework.beans.factory.support.DefaultListableBeanFactory$SerializedBeanFactoryReference.readResolve(DefaultListableBeanFactory.java:972)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1061)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1762)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:480)
at org.springframework.aop.support.AbstractBeanFactoryPointcutAdvisor.readObject(AbstractBeanFactoryPointcutAdvisor.java:98)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1849)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1667)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:480)
at org.springframework.aop.framework.AdvisedSupport.readObject(AdvisedSupport.java:550)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at …Run Code Online (Sandbox Code Playgroud) spring dependency-injection spring-mvc inversion-of-control java-ee
@NotNull、@NotEmpty、@NotBlank 注释在我的其余控制器中不起作用。我的要求是限制控制器的流量,当我在没有所需参数的情况下点击控制器时,会出现 400 错误。但是当我将 null 或空标头传递给控制器时,我没有收到 400 错误。我的控制器命中了我的处理程序类,这不是预期的行为
下面是我的控制器
@RestController
@RequestMapping("/intelligent-banking")
public class CrossSellOffersRetrievalController {
@Autowired
private CrossSellOffersRetrievalHandler crossSellOffersRetrievalHandler;
@Autowired
Environment env;
@GetMapping(value = "/cross-sell-offers/{interactionPoint}", produces = { MediaType.APPLICATION_JSON_VALUE })
public ResponseEntity<CrossSellOffersRetrievalResponse> getApplicableOffers(
@RequestHeader(value = "channelId", required = true) @Valid String channelId,
@RequestHeader(value = "clientId", required = false) String clientId,
@RequestHeader(value = "actionId", required = true) @NotNull @NotEmpty String actionId,
@RequestHeader(value = "customerId", required = true) @NotNull @NotBlank String customerId,
@RequestHeader(value = "cinSuffix", required = true) @NotNull @NotBlank String cinSuffix, …Run Code Online (Sandbox Code Playgroud) spring ×3
spring-mvc ×3
java ×1
java-ee ×1
jsf ×1
jsf-2 ×1
rest ×1
spring-boot ×1
validation ×1