1

<p:selectOneMenu>アイテムのカテゴリを選択する必要があります。デフォルトでは、メニューにはsomeBean.selectedParty.categories選択された最初のエントリが表示されます。someBean.selectedItem.categoryしかし、アイテムには、表示/選択したい現在のカテゴリが既にあります。どうすればそれを達成できますか?

<p:selectOneMenu value="#{someBean.selectedItem.category}" converter="omnifaces.SelectItemsConverter">
    <f:selectItems value="#{someBean.selectedParty.categories}" var="category" itemLabel="#{category.name}"/>   
</p:selectOneMenu>
4

1 に答える 1

1

someBean.selectedItem.category のゲッターが list で使用可能な値を返す限り、その値は選択済みとして表示されます。

ただし、いくつかの落とし穴があります
。1) デフォルト値は、おそらく Bean コンストラクターで設定する必要があります。

2) Bean (someBean) は RequestScope を持つことができません - Ajax リクエストを含むすべての HTTP リクエストは、すべてのプロパティがデフォルトに設定された Bean の完全に新しいインスタンスを作成するためです。Bean が RequestScope の場合は、ViewScope に変更します

3) someBean から selectedItem からカテゴリに「カスケード」しているため、selectedItem と selectedParty は (同じコンテンツだけでなく、同じメモリ アドレスも) 同じである必要があり、そうでない場合は JSF のライフサイクルが停止することに注意してください。選択したオブジェクトを以前に設定していると思います。AJAX を使用している場合は、ドロップダウンを使用して新しいページに「完全な」リクエストを投稿して、これをデバッグしてみてください。

4) これを単純化するために、カテゴリとカテゴリを someBean に直接移動して、ページが次のようになるようにすることができます。

<p:selectOneMenu value="#{someBean.category}" converter="omnifaces.SelectItemsConverter">
    <f:selectItems value="#{someBean.categories}" var="category" itemLabel="#category.name}"/>    
</p:selectOneMenu>
于 2012-12-14T09:02:00.120 に答える