JSFは入力値を検証できます。JSFが検証する場所を誰かが言うことができますか..?
3 に答える
どちらの答えも少し不明確だと思うので、要約したいと思います。
1.) JSFはそのままで、常にサーバー側で検証を実行します! JSF での検証は、JSF コンポーネントのライフサイクルの一部です。データを送信すると、ライフサイクルがトリガーされます。詳細には触れたくありませんが、ライフサイクルはフェーズを通過します (コンポーネントの復元、変換のトリガー、変換された値の検証、アクションリスナーとアクションの実行、応答のレンダリング)
2.) クライアント サイトの検証のように感じる検証は、JSF で ajax サポートを使用する場合です。このメソッドが行うことは、一部の html フィールドのみの実行を要求することです。JSF は通常のリクエストと同じライフサイクルを実行します。違いは、指定したコンポーネントのみを変換および検証し、指定したコンポーネントの出力のみをレンダリングすることです。したがって、JSF でサポートされている ajax の検証もサーバー側で実行されます。
3.) サードパーティのライブラリがクライアント側の検証を提供することに同意しなければなりません。
Primefacesは jQuery UI を統合していますが、依然として ajax アプローチを使用してデータを検証しています。特定のフィールドを検証するために独自の jQuery JS を作成することはできますが、私はそれを行いません。重複した検証ロジックを作成するのは面倒で、管理するのは困難です。
Richfacesは、部分的なクライアント側の検証を提供します。JSR 303 および JSF バリデーターの一部に JS 実装を提供します。したがって、実際のクライアント側 JS 検証が提供されますが、JS 実装が存在するバリデーターに対してのみ提供されます。参照: http://planet.jboss.org/post/richfaces_4_client_side_validation
Primefaces クローンとしてのIce Face は、クライアント側の検証を提供しません。
サーバーは常に、クライアントは時々。
クライアントは、使いやすさの向上として、HTML/Javascript を使用して特定のタイプの入力を検証する場合があります。ただし、それと他のすべての入力は、クライアントが情報をサーバーに戻すときにサーバー上で常に検証されます。
@Mike Q のフォローアップとして、JSF はクライアント側またはサーバー側のいずれかで検証を行うことができます。ただし、JSF ライフサイクル (サーバー側で行われる) に組み込まれているのは検証フェーズです。コンポーネントがサーバー側の検証を行わないことは可能ですが、推奨されません。すべての標準コンポーネントは、サーバー側の検証を提供します。
JSF コンポーネントは、クライアント側の検証も提供できます。サードパーティの JSF コンポーネント ライブラリ ( PrimeFaces、RichFacesなど) の多くがこれを提供しています。