java - Spring中2个请求参数的自定义验证
问题描述
有没有办法自定义验证进入 Spring 端点的 2 个请求参数?我希望能够使用我的自定义函数来验证它们。诸如在请求参数或这些参数所在的函数上添加注释并强制这些参数由另一个自定义编写的函数验证。
我需要同时获取两个参数,因为一个参数的验证输出取决于另一个参数的值。
我已经搜索并找到了一些带有自定义约束注释的解决方案,但从我所阅读的内容来看,它似乎并没有解决我的问题。
解决方案
正如正确提到的,使用valiktor是最好的选择。我也在我们的产品中使用过它,它就像一个魅力。
下面是一个片段示例,说明如何使用它来比较同一类的两个属性。
fun isValid(myObj: Myobj): Boolean {
validate(myObj) {
validate(MyObj::prop1).isGreaterThanOrEqualTo(myobj.prop2)
}
如果验证失败,Valiktor 会抛出带有正确消息的异常。如果您愿意,它还使您能够创建自定义异常消息。
现在您需要做的就是为您的 requestBody 创建一个类并使用 isValid() 方法显式检查您的条件,或者将其移至 init 块并隐式执行。
与 JSR380相比,Valiktor 具有大量验证,与Valiktor相比,创建自定义验证有点混乱。
推荐阅读
- ios - 无法将框架中包含的 Swift 4.2 类访问到 Objective C 项目中
- java - 如何在 java 中使用 Windows 凭据自动登录?
- simulation - 为什么我的第一个铜结构 QUIP 模拟不起作用?
- excel - 在 Excel 中,有人可以帮助我使用可以更改值的外部链接但保持与链接一起使用的公式的宏
- php - 使用 Laravel 会话添加到购物车
- c# - 如何在 C# 的面板上写文本?
- r - 仅对 ggplot 函数内的组中的值求和
- android - 如何解析json对象内的嵌套数组
- html - 在 html 中包含来自另一个文件的 html 代码
- php - 获取 laravel 中跨度值的计数