我在JSF 2应用程序中使用Primefaces.我有一个<p:dataTable>
,而不是选择行,我希望用户能够直接对各行执行各种操作.为此,我<p:commandLink>
在最后一栏中有几个.
我的问题:如何将行ID传递给命令链接启动的操作,以便我知道要对哪一行进行操作?我尝试使用<f:attribute>
:
<p:dataTable value="#{bean.items}" var="item">
...
<p:column>
<p:commandLink actionListener="#{bean.insert}" value="insert">
<f:attribute name="id" value="#{item.id}" />
</p:commandLink>
</p:column>
</p:dataTable>
Run Code Online (Sandbox Code Playgroud)
但它总是产生0 - 显然在f
呈现属性时行变量不可用(当我使用固定值时它可以工作).
有人有替代解决方案吗?
我一直在使用ui:repeat来生成表格.使用ui:重复它很容易得到使用的编号行varStatus
.我在调用辅助bean来处理列表导航时依赖于varStatus中的行id,例如在列表中向上或向下移动项目.
现在我想创建一个复合组件,构建一个可自定义的表,其中包含标记行,上/下移动等所需的所有功能.为此,ui:repeat将无法正常工作,因为我看不到任何方法处理不同数量的列; 我需要在一个地方指定标题,在另一个地方指定正文(我还没有达到可以创建自定义组件的知识点).因此,我继续使用数据表,因为使用这意味着将标题指定为与正文内容相同位置的构面.
这很有效,直到我注意到由于某种原因没有varStatus
了.我已经花了很多工作来处理列表演示而不需要a datamodel
,我不想开始使用它.有没有什么方法可以获得当前行号,因为它显示在表中,而不使用datamodel
?
我也正在使用viewScope,如果我理解正确,这意味着我无法将dataTable绑定到bean.