2014-03-26 79 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中使用此方法。