账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    关于Java Bean Validation校验非对象的问题。
    23
    0

    Bean Validation可以对方法的入参Bean进行校验,如:

    @RequestMapping(value="/create",method= RequestMethod.POST)
    @ResponseBody
    public ResponseEntity create(@RequestBody @Valid ObjectVO vo) {
        return null;
    }

    接下来只要在vo的属性里写上要校验的注解如@NotEmpty就可以了,在这种Java类里面是能起到校验的效果的,我想问的是如果入参是一个List<ObjectVO>或者直接就是一个String,还可以通过这样子的写法来校验吗?如:

    @RequestMapping(value="/create",method= RequestMethod.POST)
    @ResponseBody
    public ResponseEntity create(@RequestBody @Valid @NotEmpty(message = "内容不能为空") String content) {
        return null;
    }

    这样的写法我试过好像不能起到校验的作用,同理如果入参是List也不行,但是如果是某个Java Bean下的List属性就可以校验。我不确定是不是因为他们没有属性的get方法所以不能起到校验的效果还是我的写法不对。因此想求问一下大牛们,Java Bean Validation怎么对非对象的入参进行校验?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 相忘于江湖う 普通会员 1楼

      在Java Bean Validation中,验证是非对象(如字符串、数字等)时,需要使用的是"canNotEqual"规则。这个规则的意思是,如果参数中包含的值等于某个指定的值,那么这个参数就不能被使用。

      例如,如果我们有一个Person类,我们想要验证一个Person对象的姓名是否等于"John",那么我们可以这样做:

      java @Rule public Person禁止等于指定的人名("John") { return new Person("John", "Age", "Gender"); }

      在这个例子中,"禁止等于指定的人名"这个规则就使用了"canNotEqual"规则。如果"John"这个字符串等于"John"这个Person对象,那么这个Person对象就无法被创建。

      注意,"canNotEqual"规则是静态的,也就是说,如果你在一个类中定义了一个"禁止等于指定的人名"这个规则,那么这个规则在整个类中都是有效的。如果你在一个方法中定义了一个"禁止等于指定的人名"这个规则,那么这个规则在方法内部是无效的。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部