2011-01-31 81 views
-2

我需要动态创建一个jsf数据表,这意味着 列中的任何一列都会变化,并且将在运行时决定 任何示例都将被理解。动态生成一个jsf数据表

-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> 
+5

你的任何努力也将不胜感激。这不是一个代码生成机器。 – 2011-01-31 21:56:37

回答

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

尝试拼图C:的forEach或UI:重复(如果你使用的是小面)和渲染TR(外环),TD(内环)标记自己