あるコンポーネントを別のコンポーネントと確実に区別できるようにしたい場合など、必要がない限り、フォームコンポーネント(またはその他のコンポーネント)にラベルを付けないのが最善ですか?
参照コンポーネントの例を見ると、常に前にコロンが付いています。たとえば、「dialog」や「form:dialog」ではなく「:dialog」です。フォームに名前を付けてから、先行するコロンを使用してコンポーネントを指定するのがベストプラクティスではありませんか?
あるコンポーネントを別のコンポーネントと確実に区別できるようにしたい場合など、必要がない限り、フォームコンポーネント(またはその他のコンポーネント)にラベルを付けないのが最善ですか?
参照コンポーネントの例を見ると、常に前にコロンが付いています。たとえば、「dialog」や「form:dialog」ではなく「:dialog」です。フォームに名前を付けてから、先行するコロンを使用してコンポーネントを指定するのがベストプラクティスではありませんか?
現在クライアントIDで参照する必要がないためにフォームのを指定しない場合id
、JSFは何らかの方法でフォームを自動生成するため、フォームを省略しても技術的に害はありません。
たとえば、IDのないフォームの内部から、のように親フォームをいつでも参照でき、の属性を使用@form
して、親フォーム全体を送信および/またはレンダリングすることを通知できます。execute
render
<f:ajax>
<f:ajax execute="@form" render="@form" />
ただし、たとえばajaxレンダリングで別のフォームまたはその子コンポーネントの1つを参照する必要がある場合は、そのフォームに固定IDを指定して、クライアントIDで参照できるようにする必要があります。
私たちが実際のプロジェクトで経験しているもう1つの理由は、 Seleniumなどの自動化されたWebユニットテストソフトウェアでは、入力フィールドを検索し、name
属性によってボタンを送信する必要があるため、固定IDのフォームが実際に必要になることです。 JSFフォームID。JSFフォームIDが指定されていない場合、入力フィールド名はすべてのデプロイ/リクエストで予測できないため、テストできません。
結局のところ、「ベストプラクティス」は基本的に「必要な場合のみ」です。私自身、常にIDとコンポーネントを指定することに慣れています。"あなたは、決して知らない"。NamingContainer
UIInput
UICommand
コンポーネントIDは、:namingContainer:myComponentのようになります。最初の「:」は、UIViewRootインスタンス、またはコンポーネントツリーの最上位レベルでコンポーネントの検索を開始することをJSFに通知します。
http://ocpsoft.org/java/jsf2-java/how-to-jsf-2-0-render-components-outside-of-the-form/を読む