无法显示列表中的扩展属性(在bean中)- JSF使用bean



我正在学习JSF和bean。

我有以下代码:

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和itemValue=extendedAttribute的selectList。

我做了以下操作:

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

关键是itemLabel被正确地显示了,但是选项控件的value属性被像这样显示:Example@5a05a935(我检查这个值由chrome调试器和firebug)

为什么会发生这种情况?

谢谢


更新:我已经实现了Jitesh提供的解决方案,系统现在可以工作了。非常感谢!

您的代码应该可以工作。但我认为你可以通过以下方式达到同样的效果,

xhtml:

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

JSF Managed 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() {
}    

}

创建签名为public List<SelectItem>的方法,为每个ExampleObject设置SelectItem,并在f:selectItemsvalue属性中使用此方法

相关内容

  • 没有找到相关文章

最新更新