1.建立一个maven项目
这里不在描述。网上搜一下
2.需要依赖的maven配置
3.配置对应的spring配置文件
4.要验证的实体类
5.配置对应的/messages/messages_zh_CN.properties文件
[b]6.出现校验问题解决[/b]
1.校验时候直接输出{password.illegal}
这个是你没有加载对properties文件。看看你的文件加载对不对。用tomcat+maven时候注意修改配置文件最好clean package一下
2.校验时候出现乱码问题如:
能到这里就是你已经正确配置了路径,但是你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了。
这里不在描述。网上搜一下
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了。