2013-01-01 40 views
5

f:selectItem eklerken p:selectOneMenu seçimiyle ilgili bir sorun var.p: selectOneMenu, noSelectionOption öğesi mevcut olduğunda önceki öğeyi önceden seçer

Görünüm:

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

Modeli:

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"; 
} 

Sonuç:

öğe "Velid" seçilmelidir

enter image description here

Ancak "İbrahim" yerine seçilir. PrimeFaces'in, öğenin değerini değil, listedeki dizinine bağlı olarak öğeyi seçtiğini düşünüyorum.

Bu nasıl oluşur ve nasıl çözebilirim?

cevap

7

Sorununuzu yeniden oluşturabilirim. PrimeFaces kaynak koduna baktım. Sadece noSelectionOption="true" numaralı bir ürün kullanıldığında ortaya çıkan PrimeFaces SelectOneMenuRenderer'daki bir hatadır. İşleyici, bunun için <select> desteğinin HTML <option> öğesini oluşturmaz, ancak bunun için görsel <ul> listesinin <li> öğesini oluşturur. Başka bir deyişle, <select>, sizin durumunuzda 4 öğe ve <ul> 5 ürün içerir. <li>, şüphelendiğiniz gibi <option selected> dizinine göre JavaScript tarafından seçilir. Bu senin problemini açıklıyor.

En iyi bahsinizi PrimeFaces adamlarına report it as a bug yapacaktır. İşleyici ayrıca bunun için <option> değerini de oluşturmalı ya da JavaScript, endeks yerine değeri temel alan seçeneği seçmelidir. noSelectionOption="true"itemValue="#{null}" veya MTU null olarak boş dize gönderilen değerleri yorumlamak üzere yapılandırılmıştır da itemValue="" tarafından, sorununuzu çözmek gerekir değiştirilmesi arada

.

+0

gerçekten bir sorun http://code.google.com/p/primefaces/issues/detail?id=4178&colspec=ID%20Stars%20Type%20Status%20Priority%20TargetVersion%20Reporter%20Owner%20Summary&start=100 i Bu sorunu yazdıktan sonra bulundu; teşekkürler –

+0

Rica ederim. – BalusC