“为了” JSF 中的循环
我只需要在 JSF/ICEFaces 中执行一个非常基本的 for
循环,基本上渲染列号
类似于以下伪代码的
for(int i=0; i<max; i++)
{
<td>#{i}</td>
}
标记迭代集合,但我不想让我的支持 bean 变得更复杂,返回一个愚蠢的整数集合。
你知道更短更聪明的方法吗?
谢谢
I simply need to perform a very basic for
cycle in JSF/ICEFaces, basically rendering column numbers
Something like the following pseudo-code
for(int i=0; i<max; i++)
{
<td>#{i}</td>
}
the <c:forEach>
tag iterates over collections, but I don't want to make my backing bean more complex returning a stupid collection of integers.
Do you know a shorter and smarter way?
Thank you
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
标签是您真正应该使用的。 JSTL 标签在 JSF 生命周期之外运行。 Cay Horstman 有一个 JSF 课程讨论了这个事实: ui:repeat和处理可变长度数据。
下面有几个解决方案展示了一定的灵活性。您可以执行以下操作:
最大行数由名为
max
的
确定。这不是必需的,但确实展示了灵活性。或者,您可以使用类似的内容:支持 bean 代码如下:
The
<ui:repeat>
tag is what you should really use. The JSTL tags operate outside of the JSF Lifecycle. Cay Horstman has a JSF coursewhich discusses this fact: ui:repeat and HandlingVariable-Length Data.
There are a couple of solutions below which demonstrate some flexibility. You could do something like this:
The maximum number of rows is determined by a a
<ui:parameter>
namedmax
. This is not required, but does demonstrate flexibility. Alternatively you could use something like:The backing bean code is the following:
我建议从更高的抽象层次进行思考,不是渲染 HTML 标签,而是使用能够满足您需要的组件。例如,Primefaces 的数据表支持动态列,它应该能够替换您的页面迭代逻辑。
I suggest thinking at a higher level of abstraction, not in terms of rendering HTML tags, but in terms of using a component that does what you need. For example, Primefaces' datatable supports dynamic columns, which should be capable of replacing your on-page iteration logic.
使用 ui 重复的简单示例
Simple example using ui repeat
使用丰富的面孔数据表,您可以动态生成列标题和值
with rich faces data table you can dynamically generate columns headers and values