PrimeFaces F:仅在选择一行后才使用DataTable Works的SetPropertyaction



这是我的问题:

  • 支持豆是@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次。感谢您的帮助。

最新更新