动态生成jsf dataTable

时间:2011-01-31 21:23:19

标签: java jsf datatable

我需要动态创建一个jsf dataTable,这意味着没有列 会有所不同,将在运行时决定 任何例子都将不胜感激。

-SPD

                        <ice:dataTable var="item"
                            value="#{section.rowDataModel}">
                            <ice:columns value="#{section.columnDataModel}"
                                var="column">
                                <f:facet name="header">
                                    <ice:panelGroup>
                                        <ice:outputText value="#{column.columnName}" style="#{column.columnWidth}"/>
                                    </ice:panelGroup>
                                </f:facet>
                                <!-- display the table cell values-->
                                <ice:panelGroup
                                    style="text-align: center; white-space: nowrap;">
                                    <ice:inputText value="#{section.columnValue}" />
                                </ice:panelGroup>
                            </ice:columns>
                        </ice:dataTable>

2 个答案:

答案 0 :(得分:3)

也许你可以绑定数据表:

<h:dataTable id="myTable" bind="#{myBean.table}"... />

豆:

public class MyBean() {
   private HtmlDataTable dt;

   public MyBean() {
      initTable();
   }

   private initTable () {
      dt = new HtmlDataTable();
      //Add here your columns using HtmlColumn
      HtmlColumn hc = new HtmlColumn();

      //You can set colum values using ValueExpression
      //And add column to table using getChildren().add(hc);
      (...)
   }
  //Getters and setters
}

有关ValueExpression的更多信息,请访问here

随意使用h:dataTable或rich:dataTable。对于h:column或rich:列也是如此,只需检查组件名称here

答案 1 :(得分:1)

尝试嵌套c:forEach或ui:repeat(如果使用facelets)并渲染tr(外部循环),td(内部循环)标记自己