Rya*_*Zhu 4 java validation spring spring-boot
这是一个场景,一个用注释的控制器@RestController和一个需要验证参数的PUT方法@RequestBody。我@Valid在参数和 上使用注释@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;
}
Run Code Online (Sandbox Code Playgroud)
控制器
@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);
}
}
Run Code Online (Sandbox Code Playgroud)
pom 文件:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我不知道这里出了什么问题......我想这是我在同一个论点上使用@Valid和@Validated注释的问题。但即使我省略了@Validated注释,@Valid仍然无法正常工作......
有任何想法吗?
我想通了......这是因为PurchaseWrapperValidator它实现了org.springframework.validation.Validator覆盖默认javax.validation.*注释。
| 归档时间: |
|
| 查看次数: |
16822 次 |
| 最近记录: |