怎么在春天中利用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约束请求