1

这是我的问题:

  • 支持豆是@SessionScoped
  • 我有一个p:dataTablewith selectionMode设置为 single 和selection #{bean.selectedCar}
  • 表中的第一列是更新对话框的命令链接:detailDialog,oncomplete显示对话框并具有必须清除 bean 中的某些属性的actionListener
  • f:setPropertyListener有一个价值#{item}和目标#{bean.selectedCar}

我希望用户能够单击该链接,并且对话框将在该行上显示该对象的信息,但它仅在首先选择了 dataTable 中的一行时才有效。如果没有选择行并且用户单击 commandLink NULL 被传递给bean.selectedCar并且页面挂起。

作为一种解决方法,我希望至少能够预先选择 dataTable 中的第一行,并希望这可以解决问题。

4

2 回答 2

1

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()"/>
于 2012-10-30T13:16:37.470 回答
1

感谢@akoskm 的回答。第一个变体是我用于按钮的变体。我的问题是(作为第二个选项)此方法与 dataTable 中的选择选项冲突。selection="#{bean.selectedCar}"p:dateTable参数中删除是我的问题的解决方案。谢谢您的帮助。

于 2012-10-30T13:55:09.790 回答