如何在JSf中动态地将id分配给Datatable列

时间:2011-04-15 10:35:08

标签: jsf datatable

您好请查看以下代码供您参考。

                                    <%
                                        System.out.println("Here???????? 111111 :::::::::::::: "+request.getAttribute("COLUMNSIZE"));

                                        if(request.getAttribute("COLUMNSIZE") != null){

                                            int columnSize = 0;
                                            columnSize = Integer.parseInt(request.getAttribute("COLUMNSIZE").toString());
                                            System.out.println("Here 111111 :::::::::::::: "+columnSize);

                                            for(int loop=0 ; loop < columnSize ; loop++){
                                    %>

                                    <h:column>
                                        <f:facet name="header" >
                                            <h:outputText value="Field <%=loop%>">
                                            </h:outputText>
                                        </f:facet>
                                        <h:outputText value="Password" />
                                    </h:column>

                                    <%
                                        }
                                        }
                                    %>

                                </h:dataTable>

现在我想要的是我想使用循环变量动态地为列分配id ...但是不允许使用scriplets而且我找不到任何其他方法。

所以,如果你们有任何想法,请快速回复我。

3 个答案:

答案 0 :(得分:0)

如果我正确地阅读了您的问题,您想要动态更改dataTable的列数(我可能错了)。

如果你在冰面或富有脸上,为什么不使用ice:columnsrich:columns

答案 1 :(得分:0)

Scriplets不应与JSF表达式混淆。下面的代码可以用来实现你已经尝试过的东西,将逻辑放在支持bean和amp;看起来更具可读性。

<ui:repeat value="#{backingBean.headerNames}" var="header">
                 <li> 
                      <h:outputText value="#{header.field}" />
                 </li> 
</ui:repeat>

有关详细信息,请浏览JSF EL Documentation

答案 2 :(得分:0)

可能是它的工作。

HtmlOutputText test = new HtmlOutputText();
test.setValue("test");

HtmlDataTable dataTable = new HtmlDataTable();
dataTable.getChildren().add(test);