疑問に思っていたのですが、何かを見落としているのでしょうか、それとも休止状態のバリデーターが2つのフィールドが等しいことを確認するための注釈(パスワードなど)を提供していないのでしょうか。独自のバリデーターを作成できることはわかっていますが、これは標準機能のようです。
4 に答える
Spring Frameworkを使用している場合は、Spring Expression Language(SpEL)を使用できます。クロスフィールド検証を非常に簡単にするSpELに基づくJSR-303バリデーターを提供する小さなライブラリを作成しました。https://github.com/jirutka/validator-springをご覧ください。
これにより、パスワードフィールドの少なくとも1つが空でない場合に、パスワードフィールドが等しいかどうかが検証されます。
@SpELAssert(value = "password.equals(passwordVerify)",
applyIf = "password || passwordVerify",
message = "{validator.passwords_not_same}")
public class User {
private String password;
private String passwordVerify;
}
カスタムバリデータールートに行きました。ここにある他の2つの回答は、実際には質問とは関係ありません。少しグーグルで、フィールドマッチの例を見つけました。
HibernateはORMマッパーです。
これは、データをDBに永続化し、再度抽出するために使用されます。そのため、同じ値を持つ2つのフィールドを持つことは、あまり意味がありません(永続性の観点から)。これは、ビジネスロジックで確認する必要があるものです。
そして私はJuneshと一緒です...パスワードを取得可能な形式で保持しないでください...HasingとSaltingを調べてください-またはさらに良いことに、openIDについて考えて、クライアントをさらに別の愚かなパスワードで煩わせる必要がないようにしてください...
確認パスワードもデータベースに保存していないことを願っています。このためのすぐに使用できる検証はありませんが、代わりにカスタムアノテーションを使用する必要があります。これも非常に簡単です。