を選択します。私はPrimeFaces 6.1のSelectOneMenuを使用して、itemLabel/valueをselectItemsとして編集可能/フィルタリングされたドロップダウンメニューをレンダリングしています。残念ながら、selectOneMenuはitemLabelを値として選択し、selectOneMenuの値フィールドに入力します。これは非常に厄介な問題であり、バグかもしれません。Primefaces 6.1 SelectOneMenuは値として
私のスニペットコードがあります:
私が選択項目としてID /名前のペアを保持するために地図を使用しています:
<p:selectOneMenu id="selectCustomerId" value="#{paymentControlBean.selectedCustomerId}" effect="fold" editable="true" filter="true" filterMatchMode="startsWith">
<p:ajax update="paymentListToolbar"/>
<f:selectItems value="#{hm.entrySet()}" var="entry" itemValue="#{entry.key}" itemLabel="#{entry.value}"/>
</p:selectOneMenu>
:
Map<String,String> hm = new HashMap<String, String>();
hm.put("Cust001","John Dow");
hm.put("Cust002","Mark Polo");
hm.put("Cust003","Noel Max");
はその後、私はと私のselectOneMenuに入れドロップダウンリストのレンダリングは正常に動作しますが、ドロップダウンリストから1つを選択して、それを処理します。私の裏打ちbean paymentControlBean.selectedCustomerIdは "John Dow"を表示します。つまり、selectOneMenuはmy itemLabelをselectOneMenuのvalueフィールドに配置します。
私はPrimeFaces要素をp:selectOneListBoxに変更しようとしましたが、何も変更しないで、処理を繰り返すと、私のバッキングBeanが正常に動作している "Cust001"を表示します。
この比較から、PrimeFaces 6.1には深刻なバグが存在することが判明しました。これはPrimeFaces 5.2でも同じバグです。
SelectOneMenuは、特にマップを使用してキーと値のペアを処理する必要がある場合に、ドロップダウンリストの選択で非常に一般的です。
バグでない場合は、私が行うことができますか、それは私のselectItemsで正しい値を拾うために他の回避策がありますか?
私はこのPRでそれを固定している>
に出てくるPrimeFaces 6.2のリリースになりますhttps://github.com/primefaces/primefaces/issues/2862 –
Primeface 5.3で動作しますか?私たちのアプリケーションでselectOneMenuesも問題なく使用できます(最新のprimeface eliteリリースでは5.3がすべて正常でした)。違いは、私たちは効果がなく、編集可能でフィルタリング可能ではないということです。フィルタを削除しようとしましたが、編集して、効果はありますか?たぶんエラーは、この追加の属性の1つによって引き起こされます。 – lastresort
ありがとうございました。私はIDと値のフィールドを除いてすべてをシャットダウンし、再コンパイルして、もう一度実行すると、正常に動作します。それ以来、私はeditable、filter、filterMatchModeを追加し、再度テストします。デッド。つまり、selectItems(itemLabel/Value pair)が同時に編集可能であり、filterを持つ場合、selectOneMenuはitemLabelをValueとして選択します。 –