java - @Valid 注释在 spring boot 中不起作用

标签 java spring validation spring-boot

这是一个场景,一个用 @RestController 注释的 Controller 和一个需要验证其 @RequestBody 参数的 PUT 方法。我在参数上使用了 @Valid 注释,在 bean 字段上使用了 @NotNull@Min 注释,但它们不起作用。

代码在这里:

bean :

public class PurchaseWrapper {
  @DecimalMin(value = "0.00",message = "discount must be positive")
  @NotNull
  private BigDecimal discount;
  @NotNull
  private Long merchandiseId;
  @NotNull
  private Long addressId;
  @Min(1)
  @NotNull
  private Integer count;
}

Controller

@RestController
@RequestMapping("merchandises")
public class MerchandiseController {

@RequestMapping(value = "purchase",method = RequestMethod.PUT)
public ResponseEntity<RestEntity> purchase(@Valid @Validated @RequestBody PurchaseWrapper purchaseWrapper,
                                           @RequestParam String token){
    return new ResponseEntity<>(merchandiseService.purchase(purchaseWrapper,token),HttpStatus.OK);
}

@Autowired
PurchaseWrapperValidator purchaseWrapperValidator;

@InitBinder(value = "purchaseWrapper")
protected void initBinder(WebDataBinder binder) {
    binder.setValidator(purchaseWrapperValidator);
}
}

pom文件:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    <dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
    </dependency>

我不知道这里出了什么问题...我想这是我在同一个参数上使用 @Valid@Validated 注释的问题。但是即使我省略了 @Validated 注释,@Valid 仍然不起作用......

有什么想法吗?

最佳答案

我想通了...这是因为实现 org.springframework.validation.ValidatorPurchaseWrapperValidator 覆盖了默认的 javax.validation.*注释。

关于java - @Valid 注释在 spring boot 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31175009/

相关文章:

javascript - 如何在 Polymer 中强制执行所需的纸质 radio 组?

wpf - 是否可以在 WPF 中使用 ReactiveUI 绑定(bind)仅通过 INotifyDataErrorInfo 验证用户输入?

validation - 使用paypal查询用户真实身份

java - 由 : java. lang.ClassNotFoundException : org. springframework.web.context.request.RequestAttributes 引起

java - 在现有代码上实现线程

java - AnnotationSessionFactoryBean 的问题

java - IntelliJ : Adding a dependency doesn't work but adding to classpath under SDK (Project settings) works

java - iTextPdf 无法正确加载图像

java - 如何使用注释Bean和ComponentScan正确创建Spring bean?

java - 响应式(Reactive) Mono API 多参数请求处理程序