oncomplete with commandButton 不工作
oncomplete with commandButton isn't working
我有一个嵌套的数据表,它有一个编辑命令按钮,显示了一个对话框模式,
<p:commandButton value="Edit" oncomplete="PF('editStudy').show()" type="button">
<p:ajax event="click" listener="#{queryStudiesBean.setRenderDialog(true)}" update="editDialogStudy" />
<p:ajax event="click" listener="#{queryStudiesBean.setEditableStudyIndex(studyIndex)}" update="editDialogStudy: />
<p:ajax event="click" listener="#{queryStudiesBean.setEditablePatientIndex(patientIndex)}" update="editDialogStudy" />
</p:commandButton>
我正在解决更新后保持子数据表的行扩展的问题,我正在关注这个 answer ,但是我遇到了另一个问题,即一旦我加载数据表页面,甚至在我点击之前编辑按钮,具有更新属性的对话框命令按钮被评估,
<p:commandButton process="@form" update="@form,:form2:patient-dt:#{queryStudiesBean.editablePatientIndex}:study-dt" action="#{queryStudiesBean.updateStudy()}" oncomplete="PF('editStudy').hide()" value="Save" styleClass="fixed-button-size" />
,这给出了 null 错误,因为 patientIndex
仍然是 null,因为我什至没有单击数据表的编辑按钮来设置 patientIndex
。
所以我设法通过向对话框添加 rendered="#{queryStudiesBean.renderDialog}"
属性来解决这个问题。
现在我很难在编辑按钮操作中将此布尔值设置为 true,对话框现在不显示,在上面的代码中,我使用了 oncomplete,并在 (因为 action
属性和 <f:setPropertyActionListener>
对我都不起作用,我认为布尔值将在调用 oncomplete 之前设置为 true,因此对话框显示,但是没有发生,有人可以向我解释为什么吗?我看了很多帖子,但没有一个适合我。
我正在使用:
primefaces 6.2,
java8
如果您的 update="@form,:form2:patient-dt:#{queryStudiesBean.editablePatientIndex}:study-dt
引用了 parentIndex,则在呈现按钮时已调用它。
您的 update="editDialogStudy"
需要 update=":editDialogStudy"
因为它是
在数据表的一行内。
你更新了表单,但是呈现在表单之外,所以它
不会更新。在对话框周围放置 <h:panelGroup...
并更新
面板组
我有一个嵌套的数据表,它有一个编辑命令按钮,显示了一个对话框模式,
<p:commandButton value="Edit" oncomplete="PF('editStudy').show()" type="button">
<p:ajax event="click" listener="#{queryStudiesBean.setRenderDialog(true)}" update="editDialogStudy" />
<p:ajax event="click" listener="#{queryStudiesBean.setEditableStudyIndex(studyIndex)}" update="editDialogStudy: />
<p:ajax event="click" listener="#{queryStudiesBean.setEditablePatientIndex(patientIndex)}" update="editDialogStudy" />
</p:commandButton>
我正在解决更新后保持子数据表的行扩展的问题,我正在关注这个 answer ,但是我遇到了另一个问题,即一旦我加载数据表页面,甚至在我点击之前编辑按钮,具有更新属性的对话框命令按钮被评估,
<p:commandButton process="@form" update="@form,:form2:patient-dt:#{queryStudiesBean.editablePatientIndex}:study-dt" action="#{queryStudiesBean.updateStudy()}" oncomplete="PF('editStudy').hide()" value="Save" styleClass="fixed-button-size" />
,这给出了 null 错误,因为 patientIndex
仍然是 null,因为我什至没有单击数据表的编辑按钮来设置 patientIndex
。
所以我设法通过向对话框添加 rendered="#{queryStudiesBean.renderDialog}"
属性来解决这个问题。
现在我很难在编辑按钮操作中将此布尔值设置为 true,对话框现在不显示,在上面的代码中,我使用了 oncomplete,并在 action
属性和 <f:setPropertyActionListener>
对我都不起作用,我认为布尔值将在调用 oncomplete 之前设置为 true,因此对话框显示,但是没有发生,有人可以向我解释为什么吗?我看了很多帖子,但没有一个适合我。
我正在使用: primefaces 6.2, java8
如果您的 update="@form,:form2:patient-dt:#{queryStudiesBean.editablePatientIndex}:study-dt
引用了 parentIndex,则在呈现按钮时已调用它。
您的
update="editDialogStudy"
需要update=":editDialogStudy"
因为它是 在数据表的一行内。你更新了表单,但是呈现在表单之外,所以它 不会更新。在对话框周围放置
<h:panelGroup...
并更新 面板组