Sme*_*sii 5 java spring hibernate spring-boot
我有一个带有 POST 方法的控制器:
@RestController
@RequestMapping(value = "/creditDetails", produces = MediaType.APPLICATION_JSON_VALUE)
@RequiredArgsConstructor
@Validated
public class CreditDetailsController {
@ResponseStatus(HttpStatus.CREATED)
@PostMapping(consumes = MediaType.APPLICATION_JSON_VALUE)
public CreditDetailsResponse createCreditDetails(@RequestBody @Valid CreditDetailsRequestWithoutId request) {
return CreditDetailsResponse.convertToResponse(creditDetailsService.createCreditDetails(request));
}
}
Run Code Online (Sandbox Code Playgroud)
和DTO:
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class CreditDetailsRequestWithoutId {
@DecimalMax("10_000_000")
private BigDecimal creditLimit;
@DecimalMin("0")
@DecimalMax("20")
private BigDecimal creditPercent;
private UUID bankId;
}
Run Code Online (Sandbox Code Playgroud)
当我以 111% 传递 CreditDetailsWithoutId 实例时,我没有收到任何错误。为什么我的验证不起作用?如果重要的话我用
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
<version>2.6.3</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
尝试将十进制值传递给@DecimalMin、@DecimalMax:
@DecimalMax:字段或属性的值必须是小于或等于 value 元素中的数字的十进制值。 参考
@DecimalMin("0.0")
@DecimalMax("20.0")
private BigDecimal creditPercent;
Run Code Online (Sandbox Code Playgroud)
后来编辑:删除@Data并添加基本的getter和setter解决了我这边的问题,希望它能起作用。
// @Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class CreditDetailsRequestWithoutId {
@DecimalMax("1E+7")
private BigDecimal creditLimit;
@DecimalMin("0.0")
@DecimalMax("20.0")
private BigDecimal creditPercent;
public BigDecimal getCreditPercent(){
return creditPercent;
}
public void setCreditPercent(BigDecimal creditPercent){
this.creditPercent = creditPercent;
}
public BigDecimal getCreditLimit(){
return creditLimit;
}
public void setCreditLimit(BigDecimal creditLimit){
this.creditLimit = creditLimit;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8703 次 |
| 最近记录: |