没有dataModel的JSF 2 dataTable行索引
Posted
技术标签:
【中文标题】没有dataModel的JSF 2 dataTable行索引【英文标题】:JSF 2 dataTable row index without dataModel 【发布时间】:2013-01-15 23:32:29 【问题描述】:我一直在使用 ui:repeat 来生成表格。使用 ui:repeat 可以很容易地使用varStatus
对行进行编号。在调用支持 bean 来处理列表导航时,我依赖于 varStatus 中的行 ID,例如在列表中向上或向下移动项目。
现在我想创建一个复合组件,它可以构建一个可自定义的表格,其中包含标记行、向上/向下移动等所需的所有功能。为此,ui:repeat 无法正常工作,因为我做不到查看处理不同列数的方法;我需要在一个地方指定标题,在另一个地方指定正文(而且我还没有达到可以创建自定义组件的知识点)。因此我继续使用数据表,因为使用这意味着将标题指定为与正文内容相同的位置。
效果很好,直到我注意到由于某种原因不再有varStatus
。我在不需要datamodel
的情况下在处理列表演示方面做了很多工作,我不想开始使用它。有什么方法可以在不使用datamodel
的情况下获取当前行号,因为它显示在表格中?
我也在使用 viewScope,如果我理解正确,这意味着我无法将 dataTable 绑定到 bean。
【问题讨论】:
【参考方案1】:只需将表绑定到视图本身而不是 bean。
<h:dataTable binding="#table" ...>
然后您可以在必要时使用#table.rowIndex
。例如
<h:column>#table.rowIndex + 1</h:column>
请注意,代码是原样的,EL 变量名称 table
完全由您选择。
另见:
How does the 'binding' attribute work in JSF? When and how should it be used?【讨论】:
我阅读了另一篇文章,您将其作为解决方案,尽管我认为 binding="#table" 是绑定到 bean 的一些简写。我不知道这是可能的。谢谢BalusC! 我的想法和@nivis 完全一样。可能是因为var
属性的值不需要 EL 语句,但 binding
属性的值需要。我的偏见是 EL 语句中的任何命名值都应该已经声明(由我自己),我觉得给变量命名(例如 table
,rowItem
)不应该发生在 EL 语句中。
请问table
“查看自身”是什么?
我不明白,table.rowIndex
总是在这里 -1。 #table
是什么?
@Palo:代码原样。当然<h:column>
必须进入<h:dataTable>
。您可以使用任何不存在的变量名称,例如#foo
。另见***.com/q/14911158以上是关于没有dataModel的JSF 2 dataTable行索引的主要内容,如果未能解决你的问题,请参考以下文章
c#中datagridview中datasource反复赋值没有变化?
有没有办法从 datamodel.prisma 文件生成 schema.graphql 文件?