spring boot学习(7) SpringBoot 之表单验证

第一节:SpringBoot 之表单验证@Valid
是spring-data-jpa的功能;
 
下面是添加学生的信息例子,要求姓名不能为空,年龄大于18岁。
 
贴下代码吧:
Student实体:
package com.cy.entity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;


@Entity
@Table(name="t_student")
public class Student {
    @Id
    @GeneratedValue
    private Integer id;
    
    @NotEmpty(message="姓名不能为空!")
    @Column(length=50)
    private String name;
    
    @NotNull(message="年龄不能为空!")
    @Min(value=18,message="年龄必须大于18岁")
    private Integer age;
    
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}
View Code

StudentDao.java:

package com.cy.dao;

import org.springframework.data.jpa.repository.JpaRepository;

import com.cy.entity.Student;

public interface StudentDao extends JpaRepository<Student, Integer>{

}
View Code

StudentService.java:

package com.cy.service;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.cy.dao.StudentDao;
import com.cy.entity.Student;

@Service
public class StudentService {
    
    @Resource
    private StudentDao studentDao;
    
    public void add(Student student) {
        studentDao.save(student);
    }
}
View Code

StudentController.java:

package com.cy.controller;

import javax.annotation.Resource;
import javax.validation.Valid;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.cy.entity.Student;
import com.cy.service.StudentService;

@RestController
@RequestMapping("/student")
public class StudentController {
    
    @Resource
    private StudentService studentService;
    
    /**
     * 添加学生
     * @param student
     * @return
     */
    @RequestMapping("/add")
    public String add(@Valid Student student, BindingResult bindingResult){
        if(bindingResult.hasErrors()){
            return bindingResult.getFieldError().getDefaultMessage();
        }else{
            studentService.add(student);
            return "添加成功";
        }
    }
}

src/main/webapp/studentAdd.html:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>学生信息添加页面</title>
<script src="resources/jquery/jquery.min.js"></script>
<script type="text/javascript">
    
    function submitData(){
        $.post("/student/add",
                {
                    name:$("#name").val(),
                    age:$("#age").val()
                },
                function(result){
                    alert(result);
                }
        );
    }
    
</script>
</head>
<body>
    姓名:<input type="text" id="name"/><br/>
    年龄:<input type="text" id="age"/><br/>
    <input type="button" onclick="submitData()" value="提交"/>
</body>
</html>
View Code

浏览器http://localhost/studentAdd.html,输入值不对,会提示:

补充验证的其他注解,这里只用了两个注解,下面列下清单,平时可以参考用;

限制                      说明
@Null                      限制只能为null
@NotNull                    限制必须不为null
@AssertFalse                  限制必须为false
@AssertTrue                  限制必须为true
@DecimalMax(value)              限制必须为一个不大于指定值的数字
@DecimalMin(value)              限制必须为一个不小于指定值的数字
@Digits(integer,fraction)          限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction
@Future                      限制必须是一个将来的日期
@Max(value)                    限制必须为一个不大于指定值的数字
@Min(value)                  限制必须为一个不小于指定值的数字
@Past                     限制必须是一个过去的日期
@Pattern(value)               限制必须符合指定的正则表达式
@Size(max,min)                限制字符长度必须在min到max之间
@Past                      验证注解的元素值(日期类型)比当前时间早
@NotEmpty                    验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0)
@NotBlank                    验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的空格
@Email                      验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式
原文地址:https://www.cnblogs.com/tenWood/p/8644899.html