如何在jsf数据表中绑定List列表

时间:2013-10-02 23:12:57

标签: jsf select datatable

嗨,我有一个像

这样的变量
List<List<MyObject>> x = new ArrayList<List<MyObject>>();

我希望这个绑定到jsf中包含select

的数据表
<datatable>
   <column>
      <Select/>
   </column>
</datatable>

这是否可以在jsf

中使用

代码: view.xhtml

<h:dataTable id="i1" value="#{bean.listoflist}" var="list1">
  <h:column>
    <h:selectOneListbox value="#{bean.somestring}" >
      <f:selectItems value="#{list1.?}" var="any" itemValue="#{any.??}/>"
    </h:selectOneListbox> 
  </h:column>                    
</h:dataTable>`

Bean.java(name =“bean”)

public class Bean implements Serializable
{
  List<List<MyObject>> listoflist = new ArrayList<List<MyObject>>()

 //--------------Getters and Setter
}

MyObject.java

 public class MyObject
 {
    private String s1;
    private String s2;
   //---------------getter and setter
 }

1 个答案:

答案 0 :(得分:2)

如果我理解你的问题,你想要制作一个选择元素的数据表,其选项来自模型的嵌套列表。如果是,这是解决方案:

  • 根据外部列表的大小准备一系列选定元素;
  • 为您的模型对象提供转换器;
  • 相应地填充UI组件。

您可以在下面找到一个有效的例子:

<h:dataTable value="#{bean.listOfLists}" var="list" binding="#{table}" >
    <h:column>
        <h:selectOneListbox value="#{bean.selection[table.rowIndex]}" converter="myObjectConverter" >
            <f:selectItems value="#{list}" var="obj" itemValue="#{obj}" itemLabel="#{obj.s1}" />
       </h:selectOneListbox> 
   </h:column>                    
</h:dataTable>

MyObject[] selection = new MyObject[listOfLists.size()];