2

由于自定义框架尚不支持某些功能,我想使用 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

你对这样的问题有什么想法?

4

1 回答 1

1

使用提供的 Bean Validation 约束,您建议的用例是不可能的。真正的 Bean Validation 更多的是描述静态约束。

然而,曾经可以想象,要编写一个自定义约束@MaxCreditExceeded。编写自定义约束很容易,问题是如何获取用户当前的信用额度。一种方法是使用 ThreadLocal。但这需要正确设置信用额度并将其清除到此变量中。

于 2013-05-17T07:38:37.220 回答