spirng配置HibernateValidator的校验问题总结

1.建立一个maven项目
这里不在描述。网上搜一下
2.需要依赖的maven配置
 <dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.2.2.Final</version>
</dependency>
//spring我用的4.2.9.RELEASE。上了4.3.0就不会有对应的velocity的加载项了

3.配置对应的spring配置文件

//这里不写国际化消息拦截哪里配置了,应该不会有问题,网上复制一下就好了。
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
<!--不设置则默认为classpath下的 ValidationMessages.properties -->
<property name="validationMessageSource" ref="validationMessageSource"/>
</bean>
<!-- 默认的注解映射的支持 -->
[color=red]<mvc:annotation-driven validator="validator"/>[/color]
<bean id="validationMessageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<!-- 如果在国际化资源文件中找不到对应代码的信息,就用这个代码作为名称 -->
<property name="useCodeAsDefaultMessage" value="false" />
<property name="fileEncodings" value="utf-8"></property>
<property name="basename">
<value>[color=red]classpath:[/color]messages/messages</value>
</property>
</bean>

4.要验证的实体类
public class Spitter implements Serializable {

@NotEmpty(message="不能为空额")
@Pattern(regexp = "[a-zA-Z0-9_]{5,10}", message = "{username.illegal}")
private String username;
@Size(min = 5, max = 10, message = "{password.illegal}")
private String password;

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}
}

对应的页面控制Controller
/**
* 校验的控件
* 标红的部分记住在@Valid所修饰的对象之后,也可以是Errors对象,是成对出现的
* 相当于前面是给你一个标准,后边是对应哪个标准收集错误。
* @param spitter
* @param result
* @return
*/
@RequestMapping(value = "/valid", method = RequestMethod.GET)
public String valid(@Valid Spitter spitter, [color=red]BindingResult result[/color], ModelMap modelMap) {
if (result.hasErrors()) {
modelMap.addAttribute("errors", result.getFieldError().getDefaultMessage());
logger.error(result.toString());
}
return "insur_product";
}

5.配置对应的/messages/messages_zh_CN.properties文件
username.illegal=请输入5-10位的字母数字下划线的用户名
#Size.spitter.password=密码[${validatedValue}]长度必须为{min}到{max}个字符
password.illegal=密码长度必须为{min}到{max}个字符。

[b]6.出现校验问题解决[/b]
1.校验时候直接输出{password.illegal}
Field error in object 'spitter' on field 'password': rejected value [1]; codes [Size.spitter.password,Size.password,Size.java.lang.String,Size]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [spitter.password,password]; arguments []; default message [password],10,5]; default message [[color=red]{password.illegal}[/color]]

这个是你没有加载对properties文件。看看你的文件加载对不对。用tomcat+maven时候注意修改配置文件最好clean package一下
2.校验时候出现乱码问题如:
Field error in object 'spitter' on field 'password': rejected value [1]; codes [Size.spitter.password,Size.password,Size.java.lang.String,Size]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [spitter.password,password]; arguments []; default message [password],10,5]; default message [color=red][å¯ç é¿åº¦å¿é¡»ä¸º5å°10个å­ç¬¦][/color]

能到这里就是你已经正确配置了路径,但是你properties中中文不是unicode的编码,如果你不是idea你可以转成unicode编码放入properties文件,如果你是idea你只需要设置选中File | Settings | Editor | File Encodings
[img]http://dl2.iteye.com/upload/attachment/0123/5146/d8a712c5-5062-3638-9bc6-f6118efcf349.png[/img]这样你就可以直接写中文了,不需要转化一次后复制进去,
3.不能解析出{}中的内容:同样是你的编码问题,你最好是将{}也使用unicode编码放入properties的文件,这样国际化配置消息就OK了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HibernateValidatorJSR303的参考实现使用指南.pdf JSR 303 的参考实现 使用指南 由 Hardy Ferentschik和Gunnar Morling and thanks to Shaozhuang Liu 4.3.1.Final 版权 © 2009 - 2011 Red Hat, Inc. & Gunnar Morling June 20, 2011 序言 1. 开始入门 1.1. 第一个Maven项目 1.2. 添加约束 1.3. 校验约束 1.4. 更进一步 2. Validation step by step 2.1. 定义约束 2.1.1. 字段级(field level) 约束 2.1.2. 属性级别约束 2.1.3. 类级别约束 2.1.4. 约束继承 2.1.5. 对象图 2.2. 校验约束 2.2.1. 获取一个Validator的实例 2.2.2. Validator中的方法 2.2.3. ConstraintViolation 中的方法 2.2.4. 验证失败提示信息解析 2.3. 校验组 2.3.1. 校验组序列 2.3.2. 对一个类重定义其默认校验组 2.4. 内置的约束条件 2.4.1. Bean Validation constraints 2.4.2. Additional constraints 3. 创建自己的约束规则 3.1. 创建一个简单的约束条件 3.1.1. 约束标注 3.1.2. 约束校验器 3.1.3. 校验错误信息 3.1.4. 应用约束条件 3.2. 约束条件组合 4. XML configuration 4.1. validation.xml 4.2. 映射约束 5. Bootstrapping 5.1. Configuration 和 ValidatorFactory 5.2. ValidationProviderResolver 5.3. MessageInterpolator 5.3.1. ResourceBundleLocator 5.4. TraversableResolver 5.5. ConstraintValidatorFactory 6. Metadata API 6.1. BeanDescriptor 6.2. PropertyDescriptor 6.3. ElementDescriptor 6.4. ConstraintDescriptor 7. 与其他框架集成 7.1. OSGi 7.2. 与数据库集成校验 7.3. ORM集成 7.3.1. 基于Hibernate事件模型的校验 7.3.2. JPA 7.4. 展示层校验 8. Hibernate Validator Specifics 8.1. Public API 8.2. Fail fast mode 8.3. Method validation 8.3.1. Defining method-level constraints 8.3.2. Evaluating method-level constraints 8.3.3. Retrieving method-level constraint meta data 8.4. Programmatic constraint definition 8.5. Boolean composition for constraint composition 9. Annotation Processor 9.1. 前提条件 9.2. 特性 9.3. 配置项 9.4. 使用标注处理器 9.4.1. 命令行编译 9.4.2. IDE集成 9.5. 已知问题 10. 进一步阅读

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值