Spring 验证注解

利用@Valid实现一些简单的注解功能:

首先需要构造一个实体类:

import javax.validation.constraints.DecimalMax;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotBlank;
import org.hibernate.validator.constraints.NotEmpty;

public class User {
	

	private String username;
	private String password;
	private int age;
	private String address;
	public User() {
		
	}
	public User(String username, String password, int age, String address) {
		super();
		this.username = username;
		this.password = password;
		this.age = age;
		this.address = address;
	}
	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;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	@Override
	public String toString() {
		return "User [username=" + username + ", password=" + password + ", age=" + age + ", address=" + address + "]";
	}
	

}

上面是最简单的Bean形式的类。

常用注解:

  • @NotNull       验证属性是否为null
  • @NOtEmpty  验证注解元素值不为null且不为空
  • @NotBlank    验证注解的元素值不为空(不为null,去除首位和末尾空格后长度为0) 
  • @Size(min=,max=)     设置字符串长度
  • @DecimalMin("")     最小值
  • @DecimalMax("")     最大值
  • @Email       邮箱格式

修改后用实体类:
 

import javax.validation.constraints.DecimalMax;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotBlank;
import org.hibernate.validator.constraints.NotEmpty;

public class User {
	
	@NotBlank       
	@Size(min=5,max=20)
	private String username;
	@NotEmpty       
	@Size(min=6,max=30)
	private String password;
	
	@DecimalMax(value="100")
	@DecimalMin("0")
	private int age;
	
	@Email
	@NotEmpty
	private String address;
	public User() {
		
	}
	public User(String username, String password, int age, String address) {
		super();
		this.username = username;
		this.password = password;
		this.age = age;
		this.address = address;
	}
	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;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	@Override
	public String toString() {
		return "User [username=" + username + ", password=" + password + ", age=" + age + ", address=" + address + "]";
	}
	

}

下面利用@Valid注解进行处理:

	//Get方式处理
	@RequestMapping(value="/register",method=RequestMethod.GET)
	public String showUser(@ModelAttribute("user")User user,ModelMap map) {
		System.out.println("ShowUser....");
		map.addAttribute("user", new User());
		return "register";
	}
	
	//Post方式处理
	@RequestMapping(value="/register",method=RequestMethod.POST)
	public String processUser(@Valid User user,BindingResult errors,RedirectAttributes ra) {
		System.out.println("processUser...");
		if(errors.hasErrors()) {
			System.out.println("Have errors");
            ra.addFlashAttribute("user", user);            
            ra.addFlashAttribute("org.springframework.validation.BindingResult.exField", errors);
            java.util.List<ObjectError> es=errors.getAllErrors();
            for(ObjectError t:es) {
            	//System.out.println(t);
            	System.out.println(t.getCodes()[1]+"   "+t.getDefaultMessage());
            }
			//System.out.println(errors.getFieldError().getDefaultMessage());
			
			return "register";
		}
		return "success";
	}

猜你喜欢

转载自blog.csdn.net/ljcgit/article/details/84780732