所谓的表单验证,就是为了防止用户乱输入的,这个问题前端的HTML5就可以判断了,其实不需要后端来验证,这里还是讲一下后端验证

首先,我们的Person类,我们加上一些表单验证的注释,如下:

package com.vae.springboot.study.bean;

import org.springframework.stereotype.Component;

import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import java.util.Date;
import java.util.List;
import java.util.Map; @Component
public class Person { @NotBlank(message = "名字必须输入")
private String name;
@Min(value = 32,message = "年龄必须大于32岁")
private Integer age; @Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
} 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;
}
}

这就是一个简单的Java Bean类,我们写了几个表单验证的注解,关于注解,我大概列一下

说明 限制
@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格式

然后我们去Controller里面去写个方法:

@PostMapping("/test")
public String test(@Valid Person person, BindingResult bindingResult){
if (bindingResult.hasErrors()) {
System.out.println(bindingResult.getFieldError().getDefaultMessage());
return null;
}
person.setName(person.getName());
person.setAge(person.getAge());
return "Vae";
}

这里需要介绍的有两点

第一个是@RequestMapping 和 @GetMapping @PostMapping 区别

  • @GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。

  • @PostMapping是一个组合注解,是@RequestMapping(method = RequestMethod.POST)的缩写。

所以我这里使用什么都可以

第二个就是我们的方法,里面参数写了@Valid,这个就是用于验证注解是否符合要求,直接加在变量之前,在变量中添加验证信息的要求,当不符合要求时就会在方法中返回message的错误提示信息

现在,做好了一切准备,我们来测试一下,这里使用PostMan进行测试,如图

Idea输出展示

最新文章

  1. Expression Blend创建自定义按钮
  2. C语言strdup函数
  3. php 关于stripslashes 和 addslashes的使用
  4. Jquery+artTemplate+layPage 封装datagrid
  5. HDR 拍照模式的原理,实现及应用
  6. Android中三种onClick事件的实现与对比
  7. Android四大组件一----Activity
  8. 【对象模型】C++模版的编译链接过程——编译器真的会检查所有tocken层面的错误么?
  9. 视频学习_css基础学习
  10. PHP 数据库 ODBC
  11. JSP基础之 C标签中的 varStatues属性
  12. ABP领域层——工作单元(Unit Of work)
  13. Solr 教程
  14. oracle基本查询语句总结
  15. 剑指offer--面试题3
  16. LCT 模板及套路总结
  17. lambda+mutable配合move实现单函数多程序域
  18. [Swift]LeetCode670. 最大交换 | Maximum Swap
  19. numpy创建array【老鱼学numpy】
  20. CF1101G (Zero XOR Subset)-less

热门文章

  1. python3.7之12306抢票脚本实现
  2. thymeleaf手动映射根路径映射
  3. Biorhythms POJ - 1006 中国剩余定理
  4. 学习Android过程中遇到的问题及解决方法——电话监听
  5. 怎么用Verilog语言描述同步FIFO和异步FIFO
  6. 【XSY1537】五颜六色的幻想乡 数学 生成树计数 拉格朗日插值
  7. opencv图像融合(大头)
  8. 0-1背包 VIOJ1025
  9. luogu2282/bzoj1219 历史年份 (dp+hash+二分+线段树)
  10. poj3926 parade (单调队列+dp)