0

我想知道,我是否忽略了某些东西,或者休眠验证器没有提供注释来验证两个字段是否相等(例如密码)。我知道我可以编写自己的验证器,但这似乎是标准功能。

4

4 回答 4

4

如果您使用的是 Spring Framework,那么您可以使用 Spring Expression Language (SpEL)。我编写了一个小型库,它提供了基于 SpEL 的 JSR-303 验证器,这使得跨字段验证非常容易。看看https://github.com/jirutka/validator-spring

当其中至少一个不为空时,这将验证密码字段的相等性。

@SpELAssert(value = "password.equals(passwordVerify)",
            applyIf = "password || passwordVerify",
            message = "{validator.passwords_not_same}")
public class User {

    private String password;
    private String passwordVerify;
}
于 2013-03-28T00:36:48.467 回答
0

刚刚去了自定义验证器路线。这里的其他2个答案与这个问题并没有真正的关系。通过一些谷歌搜索,我找到了一个 fieldmatch 示例。

于 2010-12-13T07:17:20.287 回答
-1

Hibernate 是一个 ORM 映射器。

它用于将数据持久化到数据库中并再次提取它。因此,拥有 2 个具有相同值的字段没有多大意义(从持久性的角度来看)。那是你应该检查你的业务逻辑的东西。

我和 Junesh 在一起...不要以可检索的格式保留您的密码...查找 Hasing 和 Salting - 或者更好的是,考虑 openID,这样您就不必再用另一个愚蠢的密码来打扰您的客户...

于 2010-12-10T08:23:31.563 回答
-2

我希望您也没有将确认密码保存在数据库中。您没有任何开箱即用的验证,但是您必须使用自定义注释,这也非常简单。

于 2010-12-10T08:15:46.233 回答