使用注解@Validated和BindingResult对入参进行非空校验方式

网友投稿 1328 2022-11-29

使用注解@Validated和BindingResult对入参进行非空校验方式

使用注解@Validated和BindingResult对入参进行非空校验方式

目录注解@Validated和BindingResult对入参非空校验@Validated 和 BindingResult 使用遇到的坑

注解@Validated和BindingResult对入参非空校验

在项目当中少不了入参校验,服务器和浏览器互不信任,不能因为前端加入参判断了后台就不处理了,这样是不对的。

比如前台传过来一个对象作为入参参数,这个对象中有些属性允许为空,有些属性不允许为空。那么你还在使用if()else{}进行非空判断吗?不妨尝试下使用注解,可以使用@Validated和BindingResult。

注意:BindingResult需要放到@Validated后面

示例代码如下:普通属性可以用@NotEmpty() 特殊的使用@NotNull() 比如:枚举类型

实体类:什么不允许为空就加

@NotEmpty(groups = {SchoolDTO.SchoolGroup.class},message = "学校名不能为空")

注意:重要的事情叮嘱两遍。public interface SchoolGroup{} 别忘了加这个!public interface SchoolGroup{} 别忘了加这个!

public class SchoolDTO implements Serializable {

private Long id;

@NotEmpty(groups = {SchoolDTO.SchoolGroup.class},message = "学校名不能为空")

private String schoolName;

@NotNull

@NotEmpty(groups = {SchoolDTO.SchoolGroup.class},message = "学校负责人不能为空")

private String schoolPrincipal;

@NotNull

@NotEmpty(groups = {SchoolDTO.SchoolGroup.class},message = "职务不能为空")

private String principalPosition;

@NotNull

@NotEmpty(groups = {SchoolDTO.SchoolGroup.class},message = "联系电话不能为空")

private String schoolPhone;

//getter setter tostring 省略

public interface SchoolGroup{} 别忘了加这个

}

控制层:在入参对象上加@Validated({SchoolDTO.SchoolGroup.class}), BindingResult bindingResult @Validated进行验证,BindingResult可以获取校验错误信息

@PostMapping("/schools")

@PreAuthorize("hasRole(\"" + AuthoritiesConstants.ADMIN + "\")")

public Map createSchool(@RequestBody @Validated({SchoolDTO.SchoolGroup.class}) SchoolDTO schoolDTO,BindingResult bindingResult) throws Exception {

//返回校验错误信息

Mapmap=new HashMap<>();

if(bindingResult.hasErrors()){

map.put("success","false");

map.put("message",bindingResult.getAllErrors());

return map;

}

// .........业务省略

return map;

}

}

测试:入参的时候我没有传principalPosition和schoolPhone

@Validated 和 BindingResult 使用遇到的坑

@Validated 与BindingResult 需要相邻,否则 变量result 不能接受错误信息

控制台输出

Field error in object 'entity' on field '变量': rejected value [null]; codes [NotNull.entity.变量,NotNull.变量,NotNull.java.lang.String,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes

正确的内容截图

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SL-IMU-2-惯性器件误差分析及处理
下一篇:卫星导航系统-第4讲-卫星导航基础知识-4-2
相关文章

 发表评论

暂时没有评论,来抢沙发吧~