SpringBoot之表单验证@Valid
转自:https://www.cnblogs.com/chenlove/p/8708627.html
SpringBoot提供了强大的表单验证功能实现,给我们省去了写验证的麻烦;
这里我们给下实例,提交一个有姓名和年龄的表单添加功能,
要求姓名不能为空,年龄必须是不小于18 ;
我们先新建一个Student实体
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 
42 
43 
44 
45 
46 
47 
48 
49 
50 
51 
52 
 | 
package com.java1234.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.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岁!")    @Column(length=50)    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;    }     } | 
这里只用了两个注解,下面列下清单,平时可以参考用;
| 限制 | 说明 | 
|---|---|
| @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,也可以通过正则表达式和flag指定自定义的email格式 | 
dao接口写下:
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
 | 
package com.java1234.dao;import org.springframework.data.jpa.repository.JpaRepository;import com.java1234.entity.Student;/** * 学生Dao接口 * @author user * */public interface StudentDao extends JpaRepository<Student, Integer>{} | 
service接口写下:
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
 | 
package com.java1234.service;import com.java1234.entity.Student;/** * 学生Service接口 * @author user * */public interface StudentService {    /**     * 添加学生     */    public void add(Student student);} | 
service接口实现类写下:
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
 | 
package com.java1234.service.impl;import javax.annotation.Resource;import org.springframework.stereotype.Service;import com.java1234.dao.StudentDao;import com.java1234.entity.Student;import com.java1234.service.StudentService;/** * 学生Service实现类 * @author user * */@Servicepublic class StudentServiceImpl implements StudentService{    @Resource    private StudentDao studentDao;    @Override    public void add(Student student) {        studentDao.save(student);    }} | 
controller写下:
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 
42 
43 
44 
 | 
package com.java1234.controller;import javax.annotation.Resource;import javax.validation.Valid;import org.springframework.stereotype.Controller;import org.springframework.validation.BindingResult;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.servlet.ModelAndView;import com.java1234.entity.Student;import com.java1234.service.StudentService;/** * 学生控制类 * @author user * */@RestController@RequestMapping("/student")public class StudentController {    @Resource    private StudentService studentService;         /**     * 添加图书     * @param book     * @return     */    @ResponseBody    @PostMapping(value="/add")    public String add(@Valid Student student,BindingResult bindingResult){        if(bindingResult.hasErrors()){            return bindingResult.getFieldError().getDefaultMessage();        }else{            studentService.add(student);            return "添加成功!";        }    }} | 
add方法里 实体前要加@Valid 假如字段验证不通过,信息绑定到后面定义的BindingResult;
student添加页面studentAdd.html
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
 | 
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>学生信息添加页面</title><script src="jQuery.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" name="name"/>年龄:<input type="text" id="age" name="age"/><input type="button" value="提交" onclick="submitData()"/></body></html> | 
浏览器请求:http://localhost:8888/studentAdd.html

直接点击提交

输入姓名后,提交

输入年龄5,提交

我们改成20,提交

提交通过。
SpringBoot之表单验证@Valid的更多相关文章
- (办公)springboot配置表单验证@Valid
		
项目用到了springboot,本来很高兴,但是项目里什么东西都没有,验证,全局异常这些都需要自己区配置.最近springboot用的还是蛮多的,我还是做事情,把经验发表一下. SpringBoot提 ...
 - spring boot学习(7) SpringBoot 之表单验证
		
第一节:SpringBoot 之表单验证@Valid 是spring-data-jpa的功能: 下面是添加学生的信息例子,要求姓名不能为空,年龄大于18岁. 贴下代码吧: Student实体: ...
 - 1-7SpringBoot之表单验证@Valid
		
SpringBoot提供了强大的表单验证功能实现,给我们省去了写验证的麻烦: 这里我们给下实例,提交一个有姓名和年龄的表单添加功能, 要求姓名不能为空,年龄必须是不小于18 : 我们先新建一个Stud ...
 - SpringBoot整合表单验证注解@Validated,以及分组验证
		
首先引入jar包 <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate ...
 - SpringBoot(五)_表单验证
		
SpringBoot(五)_表单验证 参数校验在我们日常开发中非常常见,最基本的校验有判断属性是否为空.长度是否符合要求等,在传统的开发模式中需要写一堆的 if else 来处理这些逻辑,很繁琐,效率 ...
 - @valid表单验证demo
		
springMVC 表单验证demo 视图层使用的是jsp
 - Spring Boot笔记八:表单验证
		
所谓的表单验证,就是为了防止用户乱输入的,这个问题前端的HTML5就可以判断了,其实不需要后端来验证,这里还是讲一下后端验证 首先,我们的Person类,我们加上一些表单验证的注释,如下: packa ...
 - Spring进行表单验证
		
转自:https://www.tianmaying.com/tutorial/spring-form-validation 开发环境 IDE+Java环境(JDK 1.7或以上版本) Maven 3. ...
 - jQuery学习之路(8)- 表单验证插件-Validation
		
▓▓▓▓▓▓ 大致介绍 jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求.该插件捆绑了一套有用的验证方法,包括 ...
 
随机推荐
- ie8及其以下版本兼容性问题之响应式
			
解决办法:引入Respond.js让IE6-8支持CSS3 Media Query 使用方式 参考官方demo:http://scottjehl.github.com/Respond/test/tes ...
 - asp.net 后台注册脚本
			
string myScript = "function ShowPanel() { $('.nav a[href=\"#" + PanelType.wenben.ToSt ...
 - Vs工程高版本向低版本迁移
			
使用到一个SLAM程序,一些运行库是基于PCL1.7.2Vs11版本,但是Vs11巨慢,应该把程序迁移到Vs10 下面,遇到打不开的问题. 1.修改方法: 参考链接:使用低版本打开高版本VS解决方案 ...
 - 人脸检测的harr检测函数
			
眼球追踪需要对人脸进行识别,然后再对人眼进行识别,判断人眼张合度,进而判断疲劳... 解析:人脸检测的harr检测函数使用方法 代码理解: 利用训练集,检测出脸部,画出框 void CAviTestD ...
 - Window8.1下安装Matplotlib库
			
有两种方法: 直接选用一些预打包库软件,如WinPython, Python(x,y), Enthought Canopy, or Continuum Anaconda.这些软件中已包含有Matplo ...
 - 08--C++拷贝构造函数详解
			
C++拷贝构造函数详解 一. 什么是拷贝构造函数 首先对于普通类型的对象来说,它们之间的复制是很简单的,例如: [c-sharp] view plain copy int a = 100; int b ...
 - 【sqli-labs】 less30 GET- Blind -Impidence mismatch -Having a WAF in front of web application (GET型基于盲注的带有WAF注入)
			
这次是双引号的,WAF绕过方法不变 http://192.168.136.128/sqli-labs-master/Less-30/login.php?id=1&id=2" and ...
 - js手机移动端选择插件 mobileSelect.js
			
一.mobileSelect获取方法 mobileSelect支持单选.多级联动.自定义回调函数.二次渲染.最新版本下载地址[2017-09-21更新]: https://github.com/onl ...
 - Swiper 3D flow轮播使用方法
			
swiper 的3d轮播效果,移动端适用 (1). 如需使用Swiper的3d切换首先加载3D flow插件(js和css). <head> <link rel="styl ...
 - iframe的2个问题
			
1.iframe里的视频无全屏按钮<iframe src="" allowfullscreen></iframe>allowfullscreen有个浏览器前 ...