2013-01-01 36 views
5

f:selectItem जोड़ते समय p:selectOneMenu चयन में कोई समस्या है।p: selectOneMenu पिछली वस्तु को पूर्व निर्धारित करता है जब कोई चयन ऑप्शन आइटम मौजूद नहीं है

दृश्य:

<p:selectOneMenu value="#{selectionTest.selectedName}"> 
    <f:selectItem itemLabel="Select" noSelectionOption="true" /> 
    <f:selectItems value="#{selectionTest.allNames}" var="varName" itemLabel="#{varName}" itemValue="#{varName}" /> 
</p:selectOneMenu> 

मॉडल:

private List<String> allNames; 
private String selectedName; 

public MenuSelectionTestBean(){ 
    allNames = new ArrayList<String>(); 
    allNames.add("Ahmed"); 
    allNames.add("Mohamed"); 
    allNames.add("Ibrahim"); 
    allNames.add("Walid"); 

    selectedName ="Walid"; 
} 

परिणाम:

enter image description here

आइटम "वालिद" चयन किया जाना चाहिए, हालांकि "इब्राहिम" के बजाय चुना गया है। मुझे लगता है कि प्राइमफेस सूची में अपनी अनुक्रमणिका के आधार पर आइटम का चयन करता है और आइटम का मूल्य नहीं।

यह कैसे होता है और मैं इसे कैसे हल कर सकता हूं?

उत्तर

7

मैं आपकी समस्या का पुनरुत्पादन कर सकता हूं। मैंने प्राइमफेस स्रोत कोड में देखा। यह प्राइमफ़ेस SelectOneMenuRenderer में एक बग है जो केवल तब प्रकट होता है जब noSelectionOption="true" वाला कोई आइटम उपयोग किया जाता है। प्रस्तुतकर्ता उस के लिए <select> तत्व के बैकिंग के HTML <option> तत्व उत्पन्न नहीं करेगा, लेकिन इसके लिए दृश्य <ul> सूची के <li> उत्पन्न करेगा। दूसरे शब्दों में, <select> आपके मामले में 4 आइटम और <ul> 5 आइटम शामिल हैं। <li> को <option selected> की अनुक्रमणिका के आधार पर जावास्क्रिप्ट द्वारा चुना गया है, ठीक उसी तरह जैसा आपने संदेह किया था। यह आपकी समस्या बताता है।

आपकी सर्वश्रेष्ठ शर्त report it as a bug प्राइमफ़ेस लोगों के लिए है। इसके लिए प्रस्तुतकर्ता को <option> भी उत्पन्न करना चाहिए, या जावास्क्रिप्ट को इंडेक्स के बजाय मूल्य के आधार पर विकल्प का चयन करना चाहिए।

इस बीच, जगह noSelectionOption="true"itemValue="#{null}", या भी itemValue="" जब JSF null के रूप में रिक्त स्ट्रिंग प्रस्तुत मूल्यों की व्याख्या करने के लिए कॉन्फ़िगर किया गया द्वारा, आपकी समस्या का समाधान करना चाहिए।

+0

यह वास्तव में एक मुद्दा है http://code.google.com/p/primefaces/issues/detail?id=4178&colspec=ID%20Stars%20Type%20Status%20Priority%20TargetVersion%20Reporter%20Owner%20 सारांश &start=100 i इस समस्या को पोस्ट करने के बाद इसे मिला; धन्यवाद –

+0

आपका स्वागत है। – BalusC