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

导读:本篇文章讲解 使用注解@Validated和BindingResult对入参进行非空校验,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

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

比如前台传过来一个对象作为入参参数,这个对象中有些属性允许为空,有些属性不允许为空。那么你还在使用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<String,Object> createSchool(@RequestBody @Validated({SchoolDTO.SchoolGroup.class}) SchoolDTO schoolDTO,BindingResult bindingResult) throws Exception {
      //返回校验错误信息
        Map<String,Object>map=new HashMap<>();
        if(bindingResult.hasErrors()){
            map.put("success","false");
            map.put("message",bindingResult.getAllErrors());
            return map;
        }
        // .........业务省略

            return map;
        }
    }
  • 测试:入参的时候我没有传principalPosition和schoolPhone

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

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/115833.html

(0)
Java光头强的头像Java光头强

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!