我有一个名为sport的POJO,其属性为sportID,sportName,玩家数量。使用带注释的验证我编写了自己的注释约束来检查数据库中是否存在sportName。尝试添加sportName时效果很好,但是如果我尝试在不更改sportName的情况下更新玩家,则验证也会失败。
有没有办法在带注释的验证中传递参数?例如,我想将sportID传递给sportName约束检查,以便我可以在db查询中排除该ID。
或者有更好的方法吗?在我的控制器中,我应该让Spring验证输入(使用@Valid)然后如果没有错误,请调用验证函数来检查业务规则吗?
答案 0 :(得分:3)
更好的方法是使用验证组。 (Spring MVC and JSR-303 Validation Groups)
然后您可以拥有默认验证组而不使用“不退出验证器”。还有一个额外的组“不退出验证器”。这将允许您仅在需要时触发“不退出验证器”。 (不幸的是,它不是在Spring 3.0中直接支持的,你必须“手动”开始验证)
另一种方法是不像字段验证器那样实现验证器,而更像是类验证器。 - 查看针对交叉字段验证所讨论的不同解决方案in this Stack Overflow Question。它将告诉您如何访问id字段。