2014-04-25 25 views
0

中没有返回值我有一个获取f:selectItems的值的问题,但它返回它的标签。
这里是代码;<f:selectItems在<p:selectOneMenu>

<p:selectOneMenu>. 
    <p:outputLabel value="Major Diseases"></p:outputLabel> 
    <p:selectOneMenu value="#{dataMigeration.mdId}"> 
    <f:selectItem itemLabel="Select One" itemValue="" /> 
    <f:selectItems var="t" 
        value="#{dataMigeration.majorDiseas}" 
        itemLabel="#{t.value.mdName}" 
        itemValue="#{t.value}"/>        
    <p:ajax listener="#{dataMigeration.getSubDiseasesByMojarDisease(dataMigeration.mdId)}" 
      event="change" update="dataMigration"/> 
</p:selectOneMenu>    

这里是dataMigeration类

@ManagedBean(name="dataMigeration") 
@SessionScoped 
public class DataMigeration{ 
String mdId; 
private List<SelectItem> majorDiseas = new ArrayList<SelectItem>(); 
public List<SelectItem> getMajorDiseas() { 
    majorDiseas = new ArrayList<SelectItem>(); 
    System.out.println("DataMigeration.getMajorDiseas():"); 
    List<DiseaseCategory> majorDiseasesList = new ArrayList<DiseaseCategory>();  

    majorDiseasesList=DataManager.findAllRecords(); 

    for (DiseaseCategory obj : majorDiseasesList) { 
     majorDiseas.add(new SelectItem(obj.getMdId(), obj.getMdName())); 
    } 

    return majorDiseas; 
} 

public void getSubDiseasesByMojarDisease(String mdId) 
{ 
    System.out.println("\n\n\n\n | value:"+mdId); 

} 

,但我得到的MDID = F的itemLabel:将selectedItem但我希望得到的F项目值:selectem。我之前做过的一些事情,但我现在忘了如何获得ItemValue。

回答

0

您的'f:selectItems'语句错误。您可以使用'var'属性遍历复杂的Java对象列表来动态创建SelectItem对象列表。 (见http://www.mkyong.com/jsf2/jsf-2-dropdown-box-example/的例子)

但是在这种情况下,你已经创建了您的支持bean的SelectItem对象列表,所以只是像这样引用它来代替:

<f:selectItems value="#{dataMigeration.majorDiseas}" />