<f:selectitems is =“”not =“”returns =“”value =“”in =“”<p:selectonemenu =“”> </f:selectitems>

时间:2014-04-25 12:59:26

标签: jsf jsf-2 primefaces facelets el

我在获取f:selectItems的值时遇到问题,但它返回了它的标签。
这是代码;

<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);

}

但是我得到f:selectedItem的mdId = itemLabel但是我想获得f:selectem的itemValue。有些我以前做过但我现在忘记了如何获得ItemValue。

1 个答案:

答案 0 :(得分:0)

你的&lt; f:selectItems&#39;陈述是错的。您可以使用&#39; var&#39; attribute循环遍历复杂Java对象列表,以动态创建SelectItem对象列表。 (有关示例,请参阅http://www.mkyong.com/jsf2/jsf-2-dropdown-box-example/

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

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