一、添加架包和配置web.xml配置
在SPringMVC的基本架包上再添加以下架包
web.xml配置详情见SpringMVC的web.xml配置
二、SpringMVC的配置中配置相关的校验配置
分为两种方式校验
方式一:
<!-- 1、配置资源文件 -->
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<!-- 配置本地资源文件的基本名 -->
<property name="basenames">
<list>
<!-- 这里的classpath:的名字是错误信息文件的名字,注意:这里不用加后缀名 -->
<value>classpath:CustomValidationMessage</value>
</list>
</property>
<!-- 配置文件编码 -->
<property name="fileEncodings" value="UTF-8"></property>
<!-- 配置文件存放是时间--><property name="cacheSeconds" value="120"></property>
</bean>
<!--2、 配置校验器(本地校验器) -->
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<!-- 配置提供者 -->
<property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
<!-- 配置校验资源文件(校验信息来源) -->
<property name="validationMessageSource" ref="messageSource"/>
</bean>
<!-- 3、配置webBinder -->
<bean id="customBinder" class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
<property name="validator" ref="validator"></property> </bean> <!--适配器-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <!-- 4、在这种配置中需要在handlerAdapter中配置WebBindingInitializer --> <property name="webBindingInitializer" ref="customBinder"></property> </bean>
方式二:
<!--3、 配置注解驱动 引用校验器 (切记一定要放在首位,不然无法实现,有时候若需调动位置则应调动)--> <mvc:annotation-driven validator="validator"/> <!--1、 配置资源文件 --> <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> <!-- 配置本地资源文件的基本名 --> <property name="basenames"> <list>
<value>classpath:CustomValidationMessage</value> </list> </property> <!-- 配置文件编码 --> <property name="fileEncodings" value="UTF-8"></property> <!-- 配置文件存放是时间--> <property name="cacheSeconds" value="120"></property> </bean> <!--/2、配置校验器(本地校验器) --> <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> <!-- 配置提供者 --> <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/> <!-- 配置校验资源文件(校验信息来源) --> <property name="validationMessageSource" ref="messageSource"/> </bean><!-- 这里的classpath:的名字是错误信息文件的名字,注意:这里不用加后缀名 -->
三、定义错误信息的文件
四、在实体类中使用内部校验规范
private Integer sid;
@Size(max=10,min=4,message="{length.error}") //名字的长度最小为4个字符,最大为10个字符,否则出现错误信息length.error
private String sname;
private String sex;
private Integer age;
@NotNull(message="{notnull}") //这里是不能为空null
@NotEmpty(message="{notnull}") //这里是不能为空白字符串
private String addr;
补充:validation有如下校验规则:
5、在控制器中获取错误信息并包装到model中
@RequestMapping("/add")
public String add(Model model,@Validated Student st,BindingResult result)throws Exception{
System.out.println("st:"+st);
if(result.hasErrors()){
for(ObjectError oe:result.getAllErrors())System.out.println(oe);
model.addAttribute("error", result.getAllErrors());
return "add";
}
return "redirect:list.action";
}
6、在JSP页面显示错误信息
<h3>添加</h3>
<div class="col-md-6">
<c:forEach items="${error }" var="e">
${e.defaultMessage } //显示错误信息
</c:forEach>
<form action="add.action" method="post">