文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

解决@Validated注解无效,嵌套对象属性的@NotBlank无效问题

2024-04-02 19:55

关注

@Validated注解无效,嵌套对象属性的@NotBlank无效

最近在做的公司项目是一个表单系统,刚好要用到@Validated注解来对表单字段进行验证。第一次使用遇到了一些坑,问了同事之后,总算是掌握了。

步骤

首先,在dto实体你想要做验证的属性前,加上@NotBlank/NotNull/NotEmpty注解:

他们的区别如下:

然后在service层接口前添加注解@Validated

然后运行,给属性传递空值,发现没有任何反应;是因为没在接口方法的参数前加上@Valid注解,如下所示:

加上后再运行,传递空值,成功报错。 (同时,以上总结可以加在controller层进行验证,@valid同样加在方法参数前,@validated加在controller类名前图

同样能起效果)

内层对象无法验证

做到后面发现传递的对象里面还有一个对象,要对里面的对象进行验证,这时候是验证不到的

需要在里面对象前也加上总结@valid,这样,无论嵌套多少,都可以验证

(对于对象泛型,也能验证成功)

@Validated注解不生效问题、如何使用

1、需要引入的包

(缺少其中一个包,项目会报错,或者validate注解不生效)

2、将@Validated打在controller中需要验证的实体类前面


@PostMapping("/add")
@ResponseBody
public AjaxResult addSave(@Validated SysDept dept){       
}

3、在具体实体类中定义字段的验证规则

(这里注解可以放在字段上,或者是get方法上,放在set方法上,会报错)


private String deptName; 
@NotBlank(message = "部门名称不能为空")
@Size(min = 0, max = 30, message = "部门名称长度不能超过30个字符")
public String getDeptName(){
    return deptName;
}

4、数据格式校验

对其错误进行处理(全局异常处理),不进行处理,会直接报400错误

@ControllerAdvice

可以实现三个方面的功能:


@RestControllerAdvice
public class GlobalExceptionHandler{
    @ExceptionHandler(BindException.class)
    public ApiResult validatedBindException(BindException e){
        log.error(e.getMessage(), e);
        String message = e.getAllErrors().get(0).getDefaultMessage();
        return ApiResult .error(message);
    }
}

在controller中的方法中进行单个参数校验注意事项

1、controller类上打上注解@Validated

2、方法参数上给出格式如:


public Result method(@NotNull @RequestParam("id") Long id) {

3、其中@RequestParam("id")必须加,否则验证无效

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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯