JSF中的“for”循环

时间:2011-03-10 10:00:32

标签: java jsf icefaces jspx

我只需要在JSF / ICEFaces中执行一个非常基本的for循环,基本上渲染列号

类似下面的伪代码

for(int i=0; i<max; i++)
{
   <td>#{i}</td>
}

<c:forEach>标签迭代集合,但我不想让我的支持bean更复杂,返回一个愚蠢的整数集合。

你知道更短更智能的方式吗?

谢谢

5 个答案:

答案 0 :(得分:11)

<c:forEach var="i" begin="1" end="#{someBean.max}">
             <td>#{i}</td>      
 </c:forEach>

答案 1 :(得分:4)

我建议在更高的抽象层次上思考,而不是在渲染HTML标签方面,而是在使用满足您需要的组件方面。例如,Primefaces的数据表支持dynamic columns,它应该能够替换页面上的迭代逻辑。

答案 2 :(得分:4)

<ui:repeat>标签是您应该使用的标签。 JSTL标记在JSF生命周期之外运行。 Cay Horstman有一个JSF课程,讨论这个事实:ui:repeat and Handling Variable-Length Data

下面有几个解决方案展示了一些灵活性。你可以这样做:

<ui:param name="max" value="5"/>
<ui:repeat var="i" value="#{indexBean.values}" size="#{max}" >
 <tr><td>#{i}</td></tr>
</ui:repeat>

最大行数由名为<ui:parameter>的{​​{1}}确定。这不是必需的,但确实表现出灵活性。或者你可以使用类似的东西:

max

支持bean代码如下:

<ui:param name="max" value="5"/>
<ui:repeat var="i" value="#{indexBean.rowNumbers(max)}">
 <tr><td>#{i}</td></tr>
</ui:repeat>

答案 3 :(得分:1)

使用ui repeat的简单示例

<ul>
    <ui:repeat var="entry" value="${tourBean.tour.highlights}">
        <li class="pb-1">#{entry}</li>
    </ui:repeat>
</ul>

答案 4 :(得分:-1)

使用富脸数据表,您可以动态生成列标题和值