【问题标题】:How to Assign id dynamically in JSf to Datatable column如何在 JSf 中将 id 动态分配给 Datatable 列
【发布时间】:2011-08-06 05:41:04
【问题描述】:

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

                                    <%
                                        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,我找不到任何其他方式。

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

【问题讨论】:

  • 去掉了不必要的标签,如果不合适可以修改

标签: jsf datatable


【解决方案1】:

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

如果您使用的是 icefaces 或 Richfaces,为什么不使用 ice:columnsrich:columns

【讨论】:

  • 我不在其中任何一个.. m 使用纯 JSF
  • 那么为什么要使用richfaces / icefaces 标签呢?顺便提一句。实现此目的的一种舒适方法是使用组件库(如rich-/ice-/primefaces)
【解决方案2】:

脚本不应与 JSF 表达式混淆。下面的代码可用于实现您已经尝试的内容,将逻辑放在支持 bean 中,看起来更具可读性。

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

更多详情,请转至JSF EL Documentation

【讨论】:

  • 我尝试你说的方式,但它给出以下错误 -- 语法 [org.apache.catalina.core. ContainerBase.[jboss.web].[localhost].[/timesascentadmin].[jsp]] Servlet.service() for servlet jsp throw exception java.lang.IllegalArgumentException: Subsequent characters of component identifier must be a letter, a digital,下划线 ('_') 或破折号 ('-')!但组件标识符包含“#”
  • 编辑答案以实现相同但使用 facelets。
【解决方案3】:

可能是它的工作。

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

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

【讨论】:

    猜你喜欢
    • 2017-01-30
    • 2011-10-02
    • 1970-01-01
    • 2017-03-25
    • 2021-12-02
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多