今天调了一整天,主要就是jsp禁用前端验证后,提交表单,页面报400错误:解决方案,@vaild注解后要紧跟BindingResult,不然就会包400错误。它俩是成对出现的,也就是有多少个实体需要验证就要有多少对。
再就是页面不报400错误了,但是后端验证始终不好使,也就是bindingResult对象getErrors 始终是false,这个真的好郁闷。
后来研究了一下springMvc的配置发现要这样配置:
- 这是后添加的:
- <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
- <property name="converters">
- <list>
- <bean class="org.bdp.common.convertor.DataConvertor">
- </bean>
- </list>
- </property>
- </bean>
- <bean id="webBindingInitializer" class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
- <property name="conversionService" ref="conversionService"/>
- <property name="validator" ref="validator"/>
- </bean>
- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
- <property name="webBindingInitializer" ref="webBindingInitializer"/>
- </bean>
- 这是原来的:
- <bean id="validator"
- class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
- <property name="providerClass" value="org.hibernate.validator.HibernateValidator" />
- <property name="validationMessageSource" ref="messageSource" />
- </bean>
- <mvc:annotation-driven validator="validator" />
最搞笑的是当我把后加上的去掉,也就是恢复配置文件,验证就好使了。我也不知道是为什么。
验证好使了,但是又有新问题,就是有些字段的验证是非空的,但是还是不好用。后来如此解决:
后来发现在实体上面的注解,如果是String类型的要用NotEmpty,如果是integer和double用NotNull。