我一直在使用ui:repeat来生成表。使用 ui:repeat,使用 varStatus
很容易获得行编号。在调用后备 Bean 来处理列表导航时,我依赖于 varStatus 中的行 id,例如在列表中向上或向下移动项目。
现在我想创建一个复合组件,该组件构建一个可自定义的表格,其中包含标记行、向上/向下移动行等所需的所有功能。为此,ui:repeat 将不起作用,因为我看不到处理不同数量列的方法;我需要在一个地方指定标题,在另一个地方指定正文(而且我还没有达到可以创建自定义组件的知识点)。因此,我继续使用数据表,因为使用它意味着将标题指定为与正文内容相同位置的分面。
这很有效,直到我注意到由于某种原因不再有varStatus
了。我已经投入了很多工作来处理列表呈现,而无需任何datamodel
,我不想开始使用它。有什么方法可以在不使用datamodel
的情况下获取表中显示的当前行号?
此外,我正在使用viewScope,如果我理解正确,这意味着我无法将dataTable绑定到bean。
只需将表绑定到视图本身而不是 Bean 即可。
<h:dataTable binding="#{table}" ...>
然后,您可以在必要时使用#{table.rowIndex}
。
<h:column>#{table.rowIndex + 1}</h:column>
请注意,代码按原样进行,EL 变量名称table
完全由您选择。
另请参阅:
- "绑定"属性在 JSF 中如何工作?何时以及如何使用它?