【问题标题】:Spring annotation validation - Check for unique on update vs addSpring注释验证 - 检查更新与添加时的唯一性
【发布时间】:2013-04-26 22:31:27
【问题描述】:

我有一个名为 sport 的 POJO,其属性为 sportID、sportName、玩家人数。使用带注释的验证,我编写了自己的注释约束来检查sportName 是否已经存在于数据库中。尝试添加运动名称时效果很好,但是如果我尝试在不更改运动名称的情况下更新球员,验证也会失败。

有没有办法在带注释的验证中传入参数?例如,我想将 sportID 传递给 sportName 约束检查,以便可以在 db 查询中排除该 ID。

或者有更好的方法吗?在我的控制器中,我是否应该让 Spring 验证输入(使用 @Valid),然后如果没有错误调用验证函数来检查业务规则?

【问题讨论】:

    标签: spring validation


    【解决方案1】:

    更好的方法是使用验证组。 (Spring MVC and JSR-303 Validation Groups)

    然后您可以拥有没有“不退出验证器”的默认验证组。并有一个带有“不退出验证器”的额外组。这将允许您仅在需要时触发“不退出验证器”。 (遗憾的是 Spring 3.0 不直接支持它,您必须“手动”开始验证)

    另一种方法是不要像字段验证器那样实现验证器,而更像是类验证器。 -- 查看为跨字段验证讨论的不同解决方案in this Stack Overflow Question。它会让您了解如何访问 id 字段。

    【讨论】:

    • 使用了你发给我的那个链接,它成功了。我昨天实际上读到了,但不知道如何传递一个 int,但在我实现它时意识到它正在寻找字段名称的字符串,而 BeanUtils.getProperty 代码是实际获取值的内容,它然后我可以转换为整数。
    • 在同一个博客中这个 cmets 非常有趣:digitaljoel.nerd-herders.com/2010/12/28/…
    猜你喜欢
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    • 2014-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-14
    • 2011-09-02
    相关资源
    最近更新 更多