怎么在春天中利用JSR303约束请求

  介绍

怎么在春天中利用JSR303约束请求?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

, 1。适用场景

有时候我们在表单里提交一系列参数,到后台封装成一个对象,要对对象的属性做各种字段值的约束;这时候,当然可以if - else一个一个的判断,有更简洁的做法,就是使用JSR303 +弹簧的验证:

2。使用方法步骤(分3步)

<李>

实体类加字段约束注解

<李>

控制器类中@Valid标注启用(@Validated也兼容@Valid)

<李>

BindingResult获取报错信息

2.1实体类加字段约束注解

如我们要收集前端表单的字段数据到人实体中:

对需要约束的字段进行注解标注;

示例:

2.1.1的人。java

package  com.niewj.demo.model;   import  lombok.Data;   import  org.hibernate.validator.constraints.Length;   import  org.hibernate.validator.constraints.URL;   import  javax.validation.constraints。*;   import 并不知道;      @ data   public  class  Person  {   @Length才能(min =, 4, max =, 10)   @NotNull才能(message =,“名字不能为空“)   private 才能;String 名称;      @Min才能(0)   @Max才能(40)   @NotNull才能(message =,“年龄不能为空“)   private 才能;Integer 年龄;      @NotBlank才能   @NotBlank才能   ,,(=message “标志必须是URL格式“)   private 才能String 标志;      @NotEmpty才能(message =,“爱好不能为空“)   private 才能;List< String>,爱好;      ,   @NotNull才能(message =,“电子邮件不能为空!“)   private 才能String 邮件;   }

@NotNull约束字段不可为空;

@NotEmpty约束集合/地图等不能为空不能为0元素

约束是邮件格式

约束必须是url的格式

消息属性可以修改默认错误说明

2.2控制器类中@Valid标注启用(@Validated兼容@Valid)

2.2.1 HelloController。java

package  com.niewj.demo.controller;      import  com.google.gson.Gson;   import  com.niewj.demo.common.Result;   import  com.niewj.demo.model.Person;   import  com.niewj.demo.service.TestService1;   import  org.springframework.stereotype.Controller;   import  org.springframework.validation.BindingResult;   import  org.springframework.web.bind.annotation。*;      import  javax.annotation.Resource;   import  javax.validation.Valid;   import  java.util.HashMap;   import  java.util.Map;/* *   ,*测试   ,*   ,* @author  niewj   ,* @since  2020/11/16  22   ,*/@ controller   public  class  HelloController  {      ,/* *   ,,*,@param 人   ,,*,@param  bindingResult   ,,* @return   ,,*/@PostMapping才能(“/test")   @ResponseBody才能   public 才能;Result  doSth (@Valid  @RequestBody  Person 人,,BindingResult  bindingResult), {   ,,,Map<字符串,String>, map =, new  HashMap<在();   ,,,if  (bindingResult.hasErrors ()), {   ,,,,,bindingResult.getFieldErrors () .stream () .forEach (fe→, map.put (fe.getField (),, fe.getDefaultMessage ()));   ,,,,,System.out.println (bindingResult.getFieldError () .getDefaultMessage ());   ,,,,,return  Result.withErrorParamData(地图);   ,,,}      ,,,return  Result.withSuccessData(人);   ,,}   }

@RequestBody可以将身体中的请求流信息(Request.getInputStream)通过HttpMessageConverter自动转换为目标java类型:

<李>

如果前端内容类型为application/json,就使用json消息转换器帮你转为json对象,

<李>

如果前端内容类型为application/xml,就使用xml消息转换器帮你转为xml;

<李>

如果前端内容类型为text/平原,就是用字符串消息转换器帮你转成字符串;(只有类型为字符串时才可以转换)

2.2.2结果。java:

package  com.niewj.demo.common;      import  lombok.Data;      import  java.io.Serializable;   import  java.util.Map;/* *   ,*返回结果模板封装   ,*   ,* @author  niewj   ,* @since  2020/12/17  18:05   ,*/@ data   public  class  Result

怎么在春天中利用JSR303约束请求