spring - 如何对每个请求的特定字段进行spring bean验证
问题描述
示例:我有 3 种请求格式的付款对象
- 请求 1 卡付款:验证卡号、有效期和金额
- 代币支付:代币,到期日
- 验证卡:卡号,有效期
==> 单一支付对象如何实现
解决方案
您应该使用 ValidationGroups,并注释要应用特定验证的对象。
首先创建验证组(在您的情况下为 3 个):
public interface CardPayment {
}
public interface ValidateCard {
}
public interface TokenPayment {
}
对 Payment 类应用所需的验证检查(我只包括了@NotNull):
@Getter @Setter
public class Payment{
@NotNull(groups = {CardPayment.class, ValidateCard.class })
String card_num;
@NotNull(groups = {CardPayment.class, TokenPayment.class, ValidateCard.class})
Date expire_date;
@NotNull(groups = {TokenPayment.class})
String token;
@NotNull(groups = {CardPayment.class})
int amount;
}
最后激活控制器上的验证(例如卡支付场景):
@RestController
public class PaymentController{
@PostMapping("/payment")
public ResponseEntity<?> cardPayment(@Validated({CardPayment.class}) @RequestBody Payment payment){
// logic
}
}
推荐阅读
- angular - RxJS Observables - 多个订阅者获取对同一个对象的引用
- angular - 带树的角形材料表
- pyspark - pyspark - 将一次热编码后获得的稀疏向量转换为列
- javascript - FileSaver.js Chrome 问题,多个文档
- java - 无法保存 Firebase 活动状态
- php - 将端口添加到 net_sftp
- ios - 我应该有 Localizable.strings 基础还是英语?
- c++ - 多态性需要分配
- vba - 激活工作表 1,否则激活另一个工作表
- python - Python - 遇到异常时遇到问题 - os.system 命令