首页 > 代码库 > hibernate的校验框架validation 和 HttpMessageConverter的配置方式
hibernate的校验框架validation 和 HttpMessageConverter的配置方式
hibernate的校验框架validation 和 HttpMessageConverter的配置方式
好像是2个不相干的配置内容,但他们都用到了<mvc:annotation-driven />
结果在配置的时候一直无法糅合在一起。
解决方案:
hibernate的校验框架validator的验证
主要说的是使用Annotaion JSR标准的验证,
public class User { @NotEmpty(message = "用户名不能为空") private String username; @Size(min=6 ,max= 20 ,message = "密码长度不符合标准") private String password; private String nickname; ...... }
需要在Spring的配置文件中配置校验器
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> <property name="providerClass" value="http://www.mamicode.com/org.hibernate.validator.HibernateValidator"/> <!--不设置则默认为classpath下的 ValidationMessages.properties --> <property name="validationMessageSource" ref="messageSource"/> </bean> <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> <property name="basenames"> <list> <!-- 在web环境中一定要定位到classpath 否则默认到当前web应用下找 --> <value>classpath:validatemessages</value> </list> </property> <property name="useCodeAsDefaultMessage" value="http://www.mamicode.com/false"/> <property name="defaultEncoding" value="http://www.mamicode.com/utf-8"/> <property name="cacheSeconds" value="http://www.mamicode.com/120"/> </bean>
配置好了校验器后,需要将校验器注入到处理器适配器中,
将我们配好的validator注入进去,如下:
<mvc:annotation-driven validator="validator"/>
HttpMessageConverter的配置方式
没有validator配置的时候,因为json一直出现乱码,所以我是这样配置的
<bean id="stringHttpMessageConverter" class="org.springframework.http.converter.StringHttpMessageConverter"> <constructor-arg value="http://www.mamicode.com/UTF-8" index="0"/> <property name="supportedMediaTypes"> <list> <value>text/plain;charset=UTF-8</value> </list> </property> </bean> <bean id="jackson2HttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> <value>text/plain;charset=UTF-8</value> <value>application/json;charset=UTF-8</value> </list> </property> </bean> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="stringHttpMessageConverter"/> <ref bean="jackson2HttpMessageConverter"/> </list> </property> </bean> <mvc:annotation-driven />
配置必须在 <mvc:annotation-driven /> 之前,否则将不会启效
两部分配置都要<mvc:annotation-driven />
而且好像还对位置敏感,简单的连起来有一个配置会不生效。
最后终于用下面的写法融合起来了
<mvc:annotation-driven validator="validator"> <mvc:message-converters register-defaults="true"> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> <value>text/plain;charset=UTF-8</value> <value>application/json;charset=UTF-8</value> </list> </property> </bean> </mvc:message-converters> </mvc:annotation-driven> <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> <property name="providerClass" value="http://www.mamicode.com/org.hibernate.validator.HibernateValidator"/> <!--不设置则默认为classpath下的 ValidationMessages.properties --> <property name="validationMessageSource" ref="messageSource"/> </bean> <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> <property name="basenames"> <list> <!-- 在web环境中一定要定位到classpath 否则默认到当前web应用下找 --> <value>classpath:validatemessages</value> </list> </property> <property name="useCodeAsDefaultMessage" value="http://www.mamicode.com/false"/> <property name="defaultEncoding" value="http://www.mamicode.com/utf-8"/> <property name="cacheSeconds" value="http://www.mamicode.com/120"/> </bean>
代码不全,请见谅。因为是一边调试一边写的
hibernate的校验框架validation 和 HttpMessageConverter的配置方式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。