2011-09-16 7 views
3

Bean検証アノテーションを持つエンティティをプロパティで参照するJSFフォームを送信しようとすると、Beanの検証制約に違反すると、JSFによってBean検証エラーが表示されます。Beanの検証制約違反エラーはJSFでどのようにキャッチ/表示されますか?

私は疑問に思う:

  • エンティティが検証されるのはいつですか?
  • Bean検証エラーをビューにどのように処理/リンクしていますか?

答えて

4

エンティティはいつ検証されますか? JSFの検証収集および送信された値を適用する(第2段階)の間、JSFライフサイクルの第3相である相、及びモデル値(第4段階)を更新中の間


それはどのようにビューに豆の検証エラーをリンク/処理していますか?

でもバリデータ(コンバータ)例外メッセージFacesContext#addMessage()によってFacesContextに追加さFacesMessageに格納されている/なっています。すべてのこれらのメッセージは、順番に、個別具体的な入力コンポーネント

<input id="foo" value="#{bean.foo}" /> 
<h:message for="foo" /> 

<input id="bar" value="#{bean.bar}" /> 
<h:message for="bar" /> 

または

<h:messages /> 

不足しているすべての検証メッセージが記録されますジェネリック<h:messages/>コンポーネント内のすべて一緒にバインドされている<h:message>コンポーネントのいずれかで表示されますまたは開発プロジェクト段階で実行しているときに、自動的にビューに追加される開発段階の警告メッセージに表示されます。

1

検証は、要求値がサーバーに送信された後、モデルBeanに適用される前に行われます。これにより、モデルの完全性が保証されます。このプロセス中にデータ型変換が行われ、JSF標準のバリデーターと変換器でデータ型を検証するのに十分でない場合は、独自のプラグインを使用できます。このチュートリアルでは、JSFで利用可能なstandard validators and convertersについて説明します。カスタムバリデータを書き込むため

O'Reilly's book on JSFを参照してください。

+0

OPはJSR303豆の検証について話していることに注意してください( '@のNotNull'、のようなものを注釈' Pattern' @、 'Min' @、' Max'、など@)また、カスタムバリデータを作成するための独自の方法があります。これは、JSF自身のバリデーターとは無関係です。 – BalusC

関連する問題