使用Primefaces 5.2和JSF 2.1
我遇到了以下问题我得到了一个p:dataTable,当用户选择一行时,所选对象的数据应显示在表格下方。一个要求是表格下方应该有一个复选框,应该是可编辑的。如果用户切换复选框并在表格中选择其他条目,则应保存复选框“新值”。 (见下面的代码)
但我观察到以下行为。当我选择object1时,选中它的复选框然后选择object2,将调用object2的setter,而不是object1。因此object2.someValue将被更改,而object1.someValue将不会被更改。任何想法?
<p:dataTable var="myVar" selectionMode="single"
id="myTable" selection="#{form.myValue}"
rowKey="#{myVar.id}"
value="#{form.myTableData}">
<!-- columns here -->
<p:ajax event="rowSelect" process="my_booleancheckbox" update="wrapper">
<p:dataTable>
<h:panelGroup id="wrapper">
<p:booleanCheckbox value="#{form.myValue.someValue}" id="my_booleancheckbox"/>
<!--other stuff here -->
</h:panelGroup>
答案 0 :(得分:1)
这就是它应该如何工作,rowSelect
事件在selection
的属性p:dataTable
更新后被触发
将您的ajax操作移至p:booleanCheckbox
<p:dataTable var="myVar" selectionMode="single"
id="myTable" selection="#{form.myValue}"
rowKey="#{myVar.id}"
value="#{form.myTableData}">
<!-- columns here -->
<p:dataTable>
<h:panelGroup id="wrapper">
<p:booleanCheckbox value="#{form.myValue.someValue}" id="my_booleancheckbox">
<p:ajax process="my_booleancheckbox" update="wrapper">
</p:booleanCheckbox>
<!--other stuff here -->
</h:panelGroup>