p 命令按钮动作不触发但 oncomplete 触发

p commandbutton action does not fire but oncomplete fires

我正在使用 jsf 2。我的代码的一部分是这样的:

                <h:panelGrid id="jobDetail" columns="3" cellpadding="7">                        

                    <p:outputLabel value="#{msg['content.jobList.JobName']}" />
                    <p:inputText id="jobName" styleClass="BIC_search_textbox" value="#{timerConfigurationBean.selectedTimerConfigurationJob.jobName}" required="true" requiredMessage="#{msg['content.jobNew.requiredfield.errormsg']}"/>
                    <p:message for="jobName" styleClass="error"/>
                </h:panelGrid>

<p:commandButton id="update" value="Update_Button" action="#{timerConfigurationBean.updateExportJob}" styleClass="bottomButtonsAfterFirst" update="jobDetail" oncomplete="PF('updatejobpopup').show()"/>

这只是代码的一部分。发生的事情是,当我单击命令按钮 "Update_Button" 时,会发生以下两种情况之一:

1) 我在 inputText "jobName" 中输入一个值,然后单击命令按钮。首先是 action="#{timerConfigurationBean.updateExportJob}" 运行s 中的函数,然后是 oncomplete="PF('updatejobpopup').show()" 运行s 中的函数。这就是它的意图,所以没关系。

2) 我没有在输入文本中输入任何内容(这是必填字段),然后单击命令按钮。我在 Inputtext 字段旁边的网页上看到一条错误消息(发生这种情况是因为我的 commandButton 中有 update="jobDetail")并且 action="#{timerConfigurationBean.updateExportJob}" 不是 运行然而 oncomplete="PF('updatejobpopup').show()" 仍然是 运行s。这是一个问题。

我希望 oncomplete 仅在页面上没有错误时才 运行 就像 action="#{timerConfigurationBean.updateExportJob}" 中的函数一样。

有人可以帮忙吗。

您可以使用 primefaces 的回调对视图进行反馈。 因此,在您的操作方法中,您可以执行以下操作:

context.addCallbackParam("ok", true);

并在 onComplete 中:

oncomplete ="if ( args.ok ) { PF('updatejobpopup').show(); }"