实现功能:数据验证,错误要提示
package com.abc.beans;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import org.hibernate.validator.constraints.NotEmpty;
bean的验证规则
public class Student {
@NotEmpty(message="用户名不要为空")
@Size(min=2,max=5,message="用户名长度为{min}-{max}个字符")
private String name;
@Min(value=0, message="年龄最小值为{value}")
@Max(value=100, message="成绩最大值为{value}")
private int age;
@NotEmpty(message="学校代码不能为空")
@Pattern(regexp="^1[3456789]\\d{9}$", message="手机号不正确")//正则表达式
private String school;
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + ", school=" + school + "]";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
public Student(String name, int age, String school) {
super();
this.name = name;
this.age = age;
this.school = school;
}
public Student() {
super();
// TODO Auto-generated constructor stub
}
}
package com.abc.handlers;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.abc.beans.Student;
// 定义处理器
@Controller
@RequestMapping("/some")
public class SomeHandler {
@RequestMapping("/register.do")
public ModelAndView doRegister(@Validated Student student, BindingResult rs) {
ModelAndView mv = new ModelAndView();
mv.setViewName("/WEB-INF/jsp/welcome.jsp");
if(rs.hasErrors()){ //遍历所有可能发生的错误
FieldError nameError = rs.getFieldError("name");
FieldError ageError = rs.getFieldError("age");
FieldError schoolError = rs.getFieldError("school");
if(nameError != null)
{
String nameErroMessage = nameError.getDefaultMessage();//获取错误信息name
mv.addObject("nameErroMessage", nameErroMessage);
}
if( ageError != null)
{
String ageErroMessage = ageError.getDefaultMessage();//获取错误信息age
mv.addObject("ageErroMessage", ageErroMessage);
}
if( schoolError != null)
{
String schoolErroMessage = schoolError.getDefaultMessage();//获取错误信息school
mv.addObject("schoolErroMessage", schoolErroMessage);
}
mv.addObject("name",student.getName() );
mv.addObject("age",student.getAge() );
mv.addObject("school",student.getSchool() );
mv.setViewName("/index.jsp");
}
return mv;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- 注册组件扫描器 -->
<context:component-scan base-package="com.abc.handlers"/>
<!-- 注册验证器 -->
<bean id="localValidatorFactoryBean" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<!--生成验证器HibernateValidate -->
<property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
</bean>
<!-- 注册MVC注解驱动 -->
<mvc:annotation-driven validator ="localValidatorFactoryBean"/>
</beans>
验证功能能实现,但是数据判断优先级有问题。