这是我的问题:
- 支持豆是
@SessionScoped
- 我有一个
p:dataTable
, selectionmode 设置为单个和 selection#{bean.selectedCar}
- 表格中的第一列是一个命令链接,更新 a对话框:deletdialog, oncomplete 显示对话框,并具有 actionListener 清除豆子中的一些财产
-
f:setPropertyListener
具有一个值#{item}
和目标#{bean.selectedCar}
我希望用户能够单击链接,并且对话框将显示该行上的对象的信息,但是仅当首先选择DataTable中的一行时,它才能起作用。如果未选择行,并且用户单击命令链接null上的null将传递到 bean.selectedCar
,并且页面悬挂。
作为解决方法,我至少希望能够预先选择数据表中的第一行,并希望这可以解决问题。
您可以在命令链接中重复使用f:setPropertyListener
:
<p:commandLink value="show"
actionListener="#{bean.doSomething}"
oncomplete="dialog.show()">
<f:setPropertyListener value="#{item}" target="#{bean.selectedCar}"/>
</p:commandLink>
另外(由于我们正在通过数据表迭代),您可以将当前的#{item}
对象传递给您的<p:commandLink.../>
:
<p:commandLink value="Show"
action="#{bean.selectThisCar(item)}"
oncomplete="dialog.show()"/>
感谢@akoskm的回答。第一个变体是我用于按钮的内容。我的问题是(作为第二个选项)此方法与DataTable中的选择选项相矛盾。从p:dateTable
参数中删除selection="#{bean.selectedCar}"
是我的问题的5次。感谢您的帮助。