gpt4 book ai didi

java - Apache MyFaces 特立尼达 : Dynamic tags inside a

转载 作者:行者123 更新时间:2023-11-30 05:02:10 29 4
gpt4 key购买 nike

我有一个简单的要求:我的<tr:table/>的列数是动态的。我将有一个对象列表,someBean.features这将决定渲染多少列。

下图应该可以阐明我的要求。

Table with dynamic columns

在我得到的代码中,使用了 JSTL <c:forEach/>标签在 JSF 环境中使用时显然会产生问题。他们做了这样的事情:

<tr:table value="#{someBean.values}">
<tr:column headerText="Name">
<tr:outputText value="#{someBean.name}"/>
</tr:column>
<c:forEach var="col" items="#{someBean.features}">
<tr:column headerText="Column-#{col.id}">
<tr:outputText value="#{col.name}"/>
</tr:column>
</c:forEach>
</tr:table>

但是当我分析上面的代码时,方法someBean.getValues这是 <tr:table/> 的输入上面的标签被调用了数千次,而不是大约 20 次。据我所知,这是由于 <c:forEach/> tag 是编译时标签,其中 <tr:*/>是渲染时间标签。

所以,这就是我打算做的(将 <c:forEach/> 替换为 <tr:iterator/> :

<tr:table value="#{someBean.values}">
<tr:column headerText="Name">
<tr:outputText value="#{someBean.name}"/>
</tr:column>
<tr:iterator var="col" value="#{someBean.features}">
<tr:column headerText="Column-#{col.id}">
<tr:outputText value="#{col.name}"/>
</tr:column>
</tr:iterator>
</tr:table>

但是,由于某种原因,<tr:iterator/>似乎不喜欢被放置在 <tr:table/> 内并且它永远不会被执行。

任何解决方案、提示、指南将不胜感激。

哦,我们正在使用 JSF 1.1 和 MyFaces Trinidad 1.0.13 实现。

谢谢。

最佳答案

我认为的唯一方法(你可能已经知道了;))是写扩展 UIXTable并提供自定义标记处理程序来处理 <tr:columns items="#{columns}">并将 columns 数组展开为 html 列

关于java - Apache MyFaces 特立尼达 : Dynamic <tr:column/> tags inside a <tr:table/>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6317099/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com