这是我的问题:
@SessionScoped
p:dataTable
selectionMode 设置为单一且选择 #{bean.selectedCar}
f:setPropertyListener
的值为#{item}
,目标为#{bean.selectedCar}
我希望用户能够单击该链接,对话框将显示该行上对象的信息,但仅当首先选择了dataTable中的行时,它才有效。如果未选择任何行并且用户单击commandLink,则NULL将传递给bean.selectedCar
并且页面将挂起。
作为一种解决方法,我希望至少能够预先选择dataTable中的第一行,并希望这可以解决问题。
答案 0 :(得分:1)
您可以在命令链接中重复使用f:setPropertyListener
:
<p:commandLink value="show"
actionListener="#{bean.doSomething}"
oncomplete="dialog.show()">
<f:setPropertyListener value="#{item}" target="#{bean.selectedCar}"/>
</p:commandLink>
或者(因为我们正在遍历dataTable)您可以将当前#{item}
对象传递给<p:commandLink.../>
:
<p:commandLink value="Show"
action="#{bean.selectThisCar(item)}"
oncomplete="dialog.show()"/>
答案 1 :(得分:1)
感谢@akoskm的回答。第一个变种是我用于按钮的那个。我的问题是(作为第二个选项)此方法与dataTable中的选择选项冲突。从selection="#{bean.selectedCar}"
参数中删除p:dateTable
是我的问题。谢谢你的帮助。