SpringBoot学习5.6-SpringMVC-参数验证-JSR-303验证

mac2026-02-03  2

目录

1.JSR-303说明

2.注解标注POJO

3.控制器

4.html/js

5.测试结果


1.JSR-303说明

springmvc参数转换后获得一个JavaPojo,然后进入参数验证阶段。流程参考SpringBoot学习5.1-SpringMVC流程。

springmvc支持JSR-303注解验证,通过注解标明属性的校验策略。

使用要点:

JSR-303注解标明属性的校验策略@Valid开启验证Errors获取错误信息

2.注解标注POJO

/**用户,增加JSR-303验证*/ public class User { @NotNull(message = "不能为空") private String id; @Size(min = 3, max = 10, message = "长度必须在3到10") private String name; @Max(value = 3, message = "最大值为3") @Min(value = 1, message = "最小值为1") private int sex; @Size(min = 0, max = 100, message = "长度必须在0到100") private String note; @Past(message = "只能是过去的日期") @DateTimeFormat(pattern = "yyyy-MM-dd") private Date birthday; @Future(message = "只能是将来的日期") @DateTimeFormat(pattern = "yyyy-MM-dd") private Date fut; @DecimalMax(value = "1000.00", message = "不能大于1000.00") @DecimalMin(value = "0.01", message = "不能小于0.01") private BigDecimal yue; @Email(message = "必须符合邮箱地址格式") private String email; @Range(min = 1, max = 20, message = "范围必须是1到20") private Long rang; // setters and getters ...... }

3.控制器

注解@Valid开启验证,Errors获取错误信息。

@Controller @RequestMapping(path = "/mvcparamvalidate") public class MvcParamValidateController { /**跳转mpv1*/ @RequestMapping(value = "/mpv1") private String mpv1() { return "mvcparamvalidate/mpv1"; } /** * JSR-303参数验证 * 注解@Valid开启验证,否则errors.getAllErrors()不能获取到错误信息 */ @RequestMapping(value = "/mpv2") @ResponseBody private User mpv2(@Valid @RequestBody User user, Errors errors) { List<ObjectError> errList = errors.getAllErrors(); for (ObjectError oError : errList) { // 如果是字段错误 if (oError instanceof FieldError) { FieldError fe = (FieldError) oError; System.out.println(fe.getField() + "=" + fe.getRejectedValue() + ",消息=" + fe.getDefaultMessage()); } else { System.out.println(oError.getObjectName() + ",消息=" + oError.getDefaultMessage()); } } return user; } }

4.html/js

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>MPV1</title> <script src="https://code.jquery.com/jquery-3.2.0.js"> </script> <script type="text/javascript"> $(function() { var params = { id:null, name:'z', note:'数据验证', sex:4, birthday:'2020-01-01', fut:'2019-01-01', yue:2000, email:'qweertrty', rang:30 }; $("#button").click(function() { $.post({ url : "/mvcparamvalidate/mpv2", // 此处需要告知传递参数类型为JSON,不能缺少 contentType : "application/json", // 将JSON转化为字符串传递 data : JSON.stringify(params), // 成功后的方法 success : function(result) {} }); }); }); </script> </head> <body> <button id="button">按钮</button> </body> </html>

5.测试结果

访问http://localhost:8080/mvcparamvalidate/mpv1然后点击按钮。

email=qweertrty,消息=必须符合邮箱地址格式 rang=30,消息=范围必须是1到20 id=null,消息=不能为空 name=z,消息=长度必须在3到10 birthday=Wed Jan 01 08:00:00 CST 2020,消息=只能是过去的日期 yue=2000,消息=不能大于1000.00 fut=Tue Jan 01 08:00:00 CST 2019,消息=只能是将来的日期 sex=4,消息=最大值为3

 

github:https://github.com/zhangyangfei/SpringBootLearn.git中的springMVC工程。

 

最新回复(0)