Hibernate validator使用和自定义validator及整合Spring MVC

整合Spring MVC

首先新增配置文件内容(实体类里面的注解与上面完全相同)

<!– 国际化配置 –><bean id="localeResolver"class="org.springframework.web.servlet.i18n.CookieLocaleResolver" /><bean id="messageSource"class="org.springframework.context.support.ReloadableResourceBundleMessageSource"><property name="basenames"><list><value>classpath:messages/messages</value><value>classpath:messages/Validation</value></list></property><property name="useCodeAsDefaultMessage" value="true" /></bean><!– 注册验证器 –><mvc:annotation-driven validator="validator" /><bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"><property name="providerClass" value="org.hibernate.validator.HibernateValidator"/><!– 这里配置将使用上面国际化配置的messageSource –><property name="validationMessageSource" ref="messageSource"/></bean>

在Spring MVC 控制器中方法属性如下

/** * 这里的@Valid必须书写, bindingResult参数也必须书写在后面,否则验证不通过就会返回400 * @param entity * @param result * @return */@RequestMapping(value="/valid")public String validator(@Valid Entity entity,BindingResult result){if(result.hasErrors()){//如果严重没有通过,跳转提示return "error";}else{//继续业务逻辑}return "success";}error.jsp中如下

导入spring标签库

<%@ taglib uri="" prefix="form"%>

<!– commandName 控制器参数中对象名称 –><form:form commandName="entity"><!– 显示全部错误信息用* –><form:errors path="*"/></form:form><hr/><!– 对象名称.属性名称 如果该对象的指定属性没有通过校验那么显示错误信息(根据当前语言显示不同国家的文字) –><form:errors path="entity.name"/>

校验注解说明

Bean Validation 中内置的 constraint @Null 被注释的元素必须为 null @NotNull 被注释的元素必须不为 null @AssertTrue被注释的元素必须为 true @AssertFalse 被注释的元素必须为 false @Min(value)被注释的元素必须是一个数字,其值必须大于等于指定的最小值 @Max(value)被注释的元素必须是一个数字,其值必须小于等于指定的最大值 @DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值 @DecimalMax(value) 被注释的元素必须是一个数字,,其值必须小于等于指定的最大值 @Size(max=, min=) 被注释的元素的大小必须在指定的范围内 @Digits (integer, fraction)被注释的元素必须是一个数字,其值必须在可接受的范围内 @Past 被注释的元素必须是一个过去的日期 @Future被注释的元素必须是一个将来的日期 @Pattern(regex=,flag=) 被注释的元素必须符合指定的正则表达式 Hibernate Validator 附加的 constraint @NotBlank(message =) 验证字符串非null,且长度必须大于0 @Email 被注释的元素必须是电子邮箱地址 @Length(min=,max=) 被注释的字符串的大小必须在指定的范围内 @NotEmpty 被注释的字符串的必须非空 @Range(min=,max=,message=) 被注释的元素必须在合适的范围内

注意

①:在整合Spring MVC的时候,ValidationMessages_zh_CN.properties文件如果不是放在src目录下(如上面放在src/messages/下面) 那么在属性文件里面不能使用动态参数获取了(如${length} ${max}这些). 必须将hibernate validation的国际化属性全部放到src目录下面才可以(不晓得为什么,如果你能解决顺便留个言)

②:我这里使用的是spring 4.1 + hibernate validation 5.1 ,如果你使用的是spring 3.2 需要对于的hibernate validation版本是 4.x的 不然在配置org.springframework.validation.beanvalidation.LocalValidatorFactoryBean

这个的是会报错,

穿别人的鞋,走自己的路,让别追去吧

Hibernate validator使用和自定义validator及整合Spring MVC

相关文章:

你感兴趣的文章:

标签云: