1

あるコンポーネントを別のコンポーネントと確実に区別できるようにしたい場合など、必要がない限り、フォームコンポーネント(またはその他のコンポーネント)にラベルを付けないのが最善ですか?

参照コンポーネントの例を見ると、常に前にコロンが付いています。たとえば、「dialog」や「form:dialog」ではなく「:dialog」です。フォームに名前を付けてから、先行するコロンを使用してコンポーネントを指定するのがベストプラクティスではありませんか?

4

2 に答える 2

3

現在クライアントIDで参照する必要がないためにフォームのを指定しない場合id、JSFは何らかの方法でフォームを自動生成するため、フォームを省略しても技術的に害はありません。

たとえば、IDのないフォームの内部から、のように親フォームをいつでも参照でき、の属性を使用@formして、親フォーム全体を送信および/またはレンダリングすることを通知できます。executerender<f:ajax>

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

ただし、たとえばajaxレンダリングで別のフォームまたはその子コンポーネントの1つを参照する必要がある場合は、そのフォームに固定IDを指定して、クライアントIDで参照できるようにする必要があります。

私たちが実際のプロジェクトで経験しているもう1つの理由は、 Seleniumなどの自動化されたWebユニットテストソフトウェアでは、入力フィールドを検索し、name属性によってボタンを送信する必要があるため、固定IDのフォームが実際に必要になることです。 JSFフォームID。JSFフォームIDが指定されていない場合、入力フィールド名はすべてのデプロイ/リクエストで予測できないため、テストできません。

結局のところ、「ベストプラクティス」は基本的に「必要な場合のみ」です。私自身、常にIDとコンポーネントを指定することに慣れています。"あなたは、決して知らない"。NamingContainerUIInputUICommand

于 2012-04-26T19:33:45.377 に答える
1

コンポーネントIDは、:namingContainer:myComponentのようになります。最初の「:」は、UIViewRootインスタンス、またはコンポーネントツリーの最上位レベルでコンポーネントの検索を開始することをJSFに通知します。

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

于 2012-04-26T19:33:38.303 に答える