私は会社を代表するJPAエンティティを持っています。会社のウェブサイトのURLを表すフィールドがあります。永続化する前にURLが有効なウェブサイトURLであることを確認する必要があります。私は、httpまたはhttpsで始まるURLだけが有効なウェブサイトURLであると考えます。これをどのように強制できますか?私は最新のものを使用しています。私のJPAプロバイダとしてのHibernateのバージョンJPAエンティティのウェブサイトURLフィールドを検証する方法は?
答えて
Hibernate Validatorの@URLアノテーションを見てください。
ありがとうございます。つまり、WebサイトのURLフィールドを 'java.net.URL'ではなく 'String'として表現する必要があります。私はそれがOKだと思います。しかし、どのように私は 'http'と 'https'のような複数のプロトコルを指定するのですか? '@URL' 'protocol'属性は単一の 'String'を取ります。 'file'、 'ftp'などのプロトコルを許可するべきだとは思わないでください。 – user247123
@dimitrisliは、あなたに正しい解決策を提案します。 @URL
という制約を使用する必要があります。あなたが特定のプロトコルを許可する場合 - この制約の属性があります。また
@URL(protocol = "http")
private String companyUrl;
また、あなたのURLがあなたが好きな任意のパターンに一致するようにするために使用することができますregexp
属性があります。
@URL(regexp = "^(http|ftp)")
private String companyUrl;
あなたは(リンクセクションにURLを探してください)docで詳細を確認することができます。
また、あなたは、文字列の代わりにURL
を使用したい場合、あなたはURL
クラスとURL
制約のために、独自のバリデータの実装を書くことができますが、作成プロセスの間に、それは失敗します無効URL
を作成しようと思います場合は注意してください検証されたときではありません。したがって、URL
のバリデータを書くことは、プロトコルやそのようなことをチェックしたい場合にのみ意味をなさないでしょう。あなたが詳細については
public class URLValidator implements ConstraintValidator<org.hibernate.validator.constraints.URL, URL> {
...
}
を実装する必要があり、独自のバリデータを書き込むには
はthisブログ記事をチェックしてください。
regexpは私のためには機能しません。 regexp = "^(http | https)"のURLバリデーターに対してhttps://www.google.comを検証すると、検証に失敗します。 – user247123
右...それはその式を 'String'値にマッチさせようとしているからです。あなたのgoogleでは、プロトコルで始まるわけではありません。 .. しかしそれは有効なURLですか? (プロトコルなしの場合) –
私はそれを理解しました。これは、正規表現が、シンプルストリングの出現だけでなく、文字列全体にマッチしているからです。 regexp = "^(http | https)。*"というように*。を追加する必要がありました。 – user247123
- 1. JPAエンティティで非永続フィールドを作成する方法は?
- 2. Hibernate/JPA/Seam - エンティティをプログラマチックに検証するか?
- 3. JPA 2.0でエンティティを自動検出する方法
- 4. GSONでJPAエンティティを渡す方法は?
- 5. associactionでエンティティを検証する方法は?
- 6. 任意のフィールドでエンティティを検索する方法
- 7. カスタムJPA検証
- 8. JPA検証API
- 9. 一度にすべてのフィールドを検証する方法は?
- 10. JPAの検証スキーマ
- 11. formvalidation.io - 空のフィールドの検証をスキップする方法は?
- 12. Select2でModelFormのDjangoフィールドの検証をスキップする方法は?
- 13. エンティティのカスタム検証を作成する方法
- 14. JPA基準では、結合エンティティの子エンティティをフェッチする方法は?
- 15. 空白のフィールドで@パターン検証をスキップする方法は?
- 16. クラスプロパティの必須フィールドを検証する方法は?
- 17. オプションのフィールドを検証する方法は?
- 18. DRFで更新時のフィールドを検証する方法は?
- 19. 複数のフィールドでjquery検証を使用する方法は?
- 20. ionic2の入力フィールドを検証する方法は?
- 21. node.jsでformidableの「フィールド」を検証する方法は?
- 22. Djangoフォームの検証、メッセージをフィールドに表示する方法は?
- 23. DSSのデータサービスからフィールドを検証する方法は?
- 24. 無効なフィールド[Geb]のテキストを検証する方法は?
- 25. Jquery検証で1つのエラーで2つのフィールドを検証する方法
- 26. エリクサーのURLを検証する方法は?
- 27. hybrisでサードパーティのサーバーURLを検証する方法は?
- 28. エンティティの複合キーをJPAにマップする方法は?
- 29. forループJPA内のエンティティを永続化する方法は?
- 30. JPAエンティティの孤立/削除方法
JPAアノテーションはデータ(モデル)上にあります。バリデーションのライブエフェクトは、GUIレイヤーに表示する必要があります。何かが両方を接続しなければなりません。最高ののは、完全なフレームワーク(WebアプリケーションのWebフレームワーク)であり、 'マニュアル'コードではありません。 –
JPAはBean検証とは関係ありません。これはBean検証APIです –