首页 新闻 会员 周边 捐助

Java方法的入参已经使用注解@NotNull进行约束了,为什么实际调用方法时不起作用呢?

0
悬赏园豆:5 [待解决问题]

如下图所示:

定义方法时,声明的参数使用注解@NotNull进行约束了,但是实际调用时却依旧可以传入空值的参数,而且并没有报错或者警告,为什么?

liaowenxiong的主页 liaowenxiong | 初学一级 | 园豆:33
提问于:2022-06-07 21:55
< >
分享
所有回答(6)
0

用法错误

参考:https://www.cnblogs.com/zjdxr-up/p/13308717.html

talentzemin | 园豆:775 (小虾三级) | 2022-06-07 22:15
0

参考这个例子

@Data
public class ArticleDto {

    @Min(value = 1, message = "页码不能小于1")
    protected Integer page;

    @Min(value = 10, message = "分页不能小于10")
    protected Integer limit;
}

 /**
     * 分页获取文章列表
     * @param ArticleDto
     * @return
     */
    @ApiOperation(value = "分页获取文章列表", notes = "分页获取文章列表")
    @GetMapping
    public PagedResult<ArticleVO> getArtiles(@Valid ArticleDto ArticleDto) {
        // 封装值到AO
        ArticleAO articleAO = new ArticleAO();
        BeanUtils.copyProperties(ArticleDto, articleAO);

        //List<Article> carousels=articleService.getCarousels();
        //PagedResult<ArticleVO>  results=articleService.findList(articleAO);

        return articleService.findList(articleAO);
    }

源码地址: https://github.com/zhikecore/superblog

楠木大叔 | 园豆:2083 (老鸟四级) | 2022-06-08 22:49
0

number和obj封装到一个Dto类里面,像这样 handle(@Valid Dto dto) {}

飒沓流星 | 园豆:1099 (小虾三级) | 2022-06-10 10:54
0

你好,是你的调用方式有问题.
this.handle(null) 这样的手动调用实例的方法,是不能触发参数校验的。
你用NotNull之前先要了解他的运行原理,它是怎么工作的,因为流程还是比较复杂,简单的说这东西要生效首先就是要就是要经过处理的拦截器。你实例直接调用,是不会经过的,所以无效

Raiden_xin | 园豆:273 (菜鸟二级) | 2022-06-11 22:40
0

需要开启验证
1、@Validated 可以添加到接口类上或实现类上;
2、@NotNull 等注解 必须在接口上声明。

河图书卦 | 园豆:206 (菜鸟二级) | 2022-08-25 10:39
0

// 第一步,创建ValidatorFactory, 配置为默认配置
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
// 第三步,创建Validator
Validator validator = factory.getValidator();
// 第四步,调用校验方法
Set<ConstraintViolation<Car>> constraint = validator.validate(car);

car可以换成你具体的对象,这一段摘自Hibernate的官网,它校验Car对象。

这样写。

蜗牛旅行1899 | 园豆:285 (菜鸟二级) | 2024-05-17 14:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册