当前位置: 首页 > 知识库问答 >
问题:

如何使用JSR 303@Valid注释来验证原始类型?

百里杰
2023-03-14

JSR 303@Valid注释可用于验证控制器方法的输入对象,如Mkyong上所示。通用域名格式

是否可以使用@Valid annotation来验证int和long[]等基元类型?如果是,怎么做?

下面是一个Spring MVC方法签名示例,需要验证参数是否大于0:

@RequestMapping(value = { "/delete" }, method = RequestMethod.POST)
ModelAndView deleteBulk(@RequestParam("userId") int userId, @RequestParam("ids") long[] ids) {

共有2个答案

司寇善
2023-03-14

如果将@验证放在完整控制器上,则可以验证@RequestParam/@PathVariable简单对象和原语。

如果您不使用spring boot,您应该自己声明MethodValidationPostProcessor

@Bean
public MethodValidationPostProcessor methodValidationPostProcessor() {
    return new MethodValidationPostProcessor();
}
沈飞舟
2023-03-14

不,这不可能。它用于bean验证,如下所述。

 类似资料:
  • 我需要测试验证注释,但看起来它们不起作用。我不确定JUnit是否也是正确的。目前,测试将通过,但您可以看到指定的电子邮件地址是错误的。 JUnit 待测试类别

  • 我的设想是: 我有一个带有JSR303验证的pojo类,如下所示: 我的要求是,我想知道哪个特定字段没有通过验证,我想把消息写在“消息”属性中。 目前,我能够跟踪字段名称,但不能跟踪“消息”属性中存在的消息。 我使用以下方法。 我还希望将消息写在注释的属性“消息”中。我怎样才能得到它?有可能这样做吗?

  • 我有一组实体类,它们是由Hibernate工具生成的。都有@列注释,如: 我想编写一个JUnit测试来验证我对数据库的输入,但JUnit验证只在添加以下内容时有效: 我不希望添加任何注释,因为这样我需要更改自动生成的实体类。如何让JUnit测试使用第一个生成的@列注释?谢谢 我的JUnit测试(不适用于仅@列,但适用于额外的@NotNull和@size): 公共类CountryEntityTest

  • 我想验证属性firstName和lastName。但我不想每次都重复注释。 如何创建自定义注释,使代码如下所示 验证也是一样的

  • 我有一个用Java验证注释注释的模型对象。 根据业务需求,将填充文件名或小时字段,以验证我编写的自定义验证器“CriteriaValidator”。 上面的模型作为方法的输入参数传入,该方法也用@Valid和@ValidCriteria注释。 我的问题是方法中的2个注释。我必须添加@Valid才能检查类中注释的约束。我的自定义验证器仅检查两个字段之一的存在:文件名或小时。 我的问题是,如何使用单个