2014-03-26 70 views
0

我正在學習JSF和bean。無法顯示列表中的擴展屬性(在bean中) - 使用Bean的JSF

我已經以下代碼:

public class Example { 

    private List<ExampleObject> listExampleObject; 

    //Get and set from list... 
} 

public class ExampleObject extends ExampleObjectExtend { 

    private String exampleAttribute; 

    //Get and set from attribute. 

} 

public class ExampleObjectExtend { 

    private String extendedAttribute; 

    //Get and set from extendedAttribute.. 

} 

我需要顯示與itemLabel = exampleAttribute和項目值= extendedAttribute一個選擇列表的。

我做了以下內容:

<h:selectOneMenu id="listExample"> 
    <f:selectItems value="#{myBean.listExampleObject}" var="example" itemValue="#{example.extendedAttribute}" itemLabel="#{example.exampleAttribute}"/> 
</h:selectOneMenu> 

的一點是,被顯示在適當的itemLabel,但是從選項控制值屬性被顯示爲這樣的:com.package.example.web。示例@ 5a05a935(我通過chrome調試器和螢火蟲檢查了這個值)

爲什麼會發生這種情況?

謝謝


更新:我已經實現由Jitesh所提供的解決方案和系統現在工作。非常感謝!

+0

請將您的問題標爲已回答,在此處結帳http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – Jitesh

回答

0

你的代碼應該可以工作。但我認爲你可以實現通過下面的方式相同,

XHTML:

<h:selectOneMenu id="listExample"> 
      <f:selectItems value="#{myBean.ddl_example_options}"/> 
</h:selectOneMenu> 

JSF託管Bean:

public class MyBean implements Serializable{ 

List<SelectItem> ddl_example_options; 
String ddl_example; 

public List<SelectItem> getDdl_example_options() { 
    return ddl_example_options; 
} 

public void setDdl_example_options(List<SelectItem> ddl_example_options) { 
    this.ddl_example_options = ddl_example_options; 
} 

public String getDdl_example() { 
    return ddl_example; 
} 

public void setDdl_example(String ddl_example) { 
    this.ddl_example = ddl_example; 
} 

private void setDdl_example(){ 
    ddl_example_options=new ArrayList<>(); 
    ddl_example_options.add(new SelectItem("1","Option-1")); 
    ddl_example_options.add(new SelectItem("2","Option-2")); 
} 

@PostConstruct 
public void init(){ 
    setDdl_example(); 
} 
public MyBean() { 
}  

}

+0

我已採用此解決方案。謝謝大家(謝謝你@Vasil Lukach你的回答) – user2416027

+0

請將你的問題標爲回答:) – Jitesh

0

與簽名public List<SelectItem>,每安裝了SelectItem創建方法每個ExampleObject,並在value屬性f:selectItems中使用此方法。