2012-04-26 9 views
1

必要がある場合を除き、フォームコンポーネント(またはそのようなコンポーネントは他のコンポーネント)にラベルを付けないことをお勧めします。あるコンポーネントを別のコンポーネントと確実に区別できるようにしたい場合は、JSF 2.0フォームのIDは典型的なものではありませんか?

リファレンスコンポーネントの例を見ると、常に先行するコロンで表示されています。 "ダイアログ:"または "フォーム:ダイアログ"ではなく、:ダイアログ:フォームの名前を付けておらず、先行するコロンを使用してコンポーネントを指定するのがベストプラクティスですか?

答えて

3

を開始したい ことフォームのidを指定する必要があります。これは、クライアントIDで参照する必要がないため、JSFが自動生成するため、技術的には害を及ぼしません。 IDレス形の内側から

は、例えば、あなたは常にあなたが全体の親フォームを送信および/またはレンダリングすることを知らせるために<f:ajax>execute@formrender属性として親フォームを参照することができます。 AJAXの

<f:ajax execute="@form" render="@form" /> 

しかし、あなたは、例えば参照する必要がある場合フォームまたはその子要素の一つは、レンダリングあなたがクライアントでそれを参照することができるようになりますように、あなたは、そのフォームに固定されたIDを与える必要がありますID。

実世界のプロジェクトで発生しているもう一つの理由は、Seleniumなどの自動化されたWebユニットテストソフトウェアでは、入力フィールドと送信ボタンを見つける必要があるため固定IDのフォームが必要です。 JSFフォームIDに基づいて作成されます。 JSFフォームIDが指定されていない場合は、すべてのデプロイ/リクエストで入力フィールド名が予測できず、テストできません。

「ベストプラクティス」は基本的に「必要な場合にのみ」です。私自身はちょうどに慣れています。NamingContainerUIInputおよびUICommandのIDを指定すると、常にになります。 "あなたは、決して知らない"。

+0

Webユニットのテストソフトウェアについては、そのうちの1つを使用しているので、われわれの判断を下す可能性があります。 – BestPractices

1

コンポーネントIDは、 :namingContainer:myComponentのようになります。最初はどこ「:」JSFに伝え、あなたがない場合UIViewRootインスタンスのコンポーネント、または コンポーネントツリーの最上部レベルを探して

読むhttp://ocpsoft.org/java/jsf2-java/how-to-jsf-2-0-render-components-outside-of-the-form/

+0

コンポーネントツリーの先頭から始まるパフォーマンス上の問題があるかどうか知っていますか? BTW、非常に便利なリンク。ありがとう! – BestPractices

+0

わかりませんが、ある程度のオーバーヘッドが必要です。 –

関連する問題