BeanValidation用于运行时派生的约束值

frem 发布于 2019-03-15 最后更新 2019-03-15 14:08 1 浏览

我想使用jsr303代替当前的自定义验证框架,因为自定义框架还不支持的一些功能,我正在调查jsr是否支持某个用例。 假设我在某个前端向客户提供了一个贷款报价字段,并且该字段预先填入了系统根据用户的信用评分生成的贷款金额,并且客户可以获取全部金额或更低的金额比所提供的价值(所​​提供的价值不多)。 领域:

@DecimalMin("1000.00")
@DecimalMax(onlyKnowAtRuntime)
private BigDecimal loanOffer;
offer = $20 000.00
customer inputs = $50 000.00
由于信用评分是由运行时间生成的,因此我们不知道最大值(@DecimalMax,本例中为$20 000.00)的值在编译时,但我们需要确保我们验证客户不会接管$20 000.00 你有什么想法来解决这个问题?
已邀请:

gautem

赞同来自:

使用提供的Bean Validation约束无法建议用例。真的Bean验证更多的是描述静态约束。 然而,曾经可以想象,编写自定义约束@MaxCreditExceeded。编写自定义约束很容易,问题是如何获得用户的当前信用限额。一种方法可能是使用ThreadLocal。但这要求信用额度得到适当设置并清除到此变量中。