Apache MyFaces特立尼达: 内的动态 标记
||
我有一个简单的要求:ѭ0的列数是动态的。我将有一个对象列表
someBean.features
,它将确定要呈现的列数。
下图应阐明我的要求。
在给出的代码中,使用了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>
但是,当我分析上面的代码时,上面的<tr:table/>
标记的输入方法someBean.getValues
被调用了数千次,而不是大约20次。这-我发现-是由于<c:forEach/>
标记是一个编译事实时间标签,其中“ѭ7”是渲染时间标签。
因此,这是我打算做的事情(将<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>
但是,由于某种原因,ѭ9似乎不喜欢放在ѭ0中,并且它永远也不会执行。
任何解决方案,提示,指南将不胜感激。
哦,我们正在将JSF 1.1与MyFaces Trinidad 1.0.13实现一起使用。
谢谢。
没有找到相关结果
已邀请:
2 个回复
浮凰量
并将columns数组扩展为html列
坛沤疲撑拆
起作用而
不起作用的原因,这是因为JSTL标记在视图构建期间运行,而不是在视图渲染期间运行,并且
组件的唯一有效子元素是
组件。基本上,在构建视图时,所有JSTL标签都将运行,并且您最终将获得一个纯JSF视图,所有all18都已经在正确的位置。呈现视图时,所有JSF标记都将运行,最终您得到纯HTML结果,然后可以将其发送到浏览器。 也可以看看: 为什么JSF多次调用getter