1

我有一个 primefaces 对话框,其中包含一个输入文本区域和一个命令按钮“提交”。

我有一个包含“拒绝”按钮的表单,该表单位于 Tabview 内。当用户单击“拒绝”按钮时,我会显示对话框“rejectDialog”供用户输入拒绝原因。一旦用户输入评论并单击对话框中的提交按钮“submitButton”,就会在 bean 中调用一个操作方法来更新评论值。我有一个调用 javascript 方法的 oncomplete 属性。action 方法完成后,javascript 方法不再执行,对话框关闭。该操作成功执行,我没有收到任何错误。我也尝试用 onsuccess 替换 oncomplete,但仍然没有执行 javascript 方法。

我想知道为什么在对话框中从不完整地调用javascript?

我还尝试在 oncomplete 属性中添加一个警报,但仍然从未执行警报。

代码附在下面。

XHTML 页面

<p:dialog id="rejectDialog" header="Enter Comments" 
              hideEffect="explode" showEffect="explode" 
              resizable="false" widgetVar="rejectDlg" 
              style="background: #bcbcbc !important;"
              >
            <h:panelGrid columns="1" cellpadding="0" cellspacing="2"
                         styleClass="commentsPanel"
                         id="dialogpanelgrid">
                <p:outputLabel for="rejectComments" value="Enter Comments *: "
                               style="font-weight: bold;">

                </p:outputLabel>
                <p:inputTextarea cols="40" rows="4" autoResize="false" 
                   id="rejectComments" styleClass="rejectCommentsCls"
                   value="#{requestDetailsMB.rejectCommentsDesc}"
                   style="background: lightgray !important; color:#000 !important;" 
                                 widgetVar="txtreject"
                                 >
                    <f:validator validatorId="commentsValidator"></f:validator>
                </p:inputTextarea>
         <h:outputLabel id="rejectCommentsMessage" class="rejectCommentsMsg" value="" 
                               style="color:red !important; font-weight: bold;">

                </h:outputLabel>
            </h:panelGrid>
            <p:commandButton id="submitButton" 
                             style="margin-top: 15px; float:right;" 
                             value="Submit"
                             onclick="return validate();"
                             action="#{requestDetailsMB.rejectRequest}"
                             oncomplete="performRejectAction();"
                             /> 
    </p:dialog>
4

1 回答 1

0

onclick发生commandButton. javascript 可以覆盖 primefaces 的行为,这可能oncomplete是不被执行的原因。我建议您改用该onstart事件:

<p:commandButton id="submitButton" 
    style="margin-top: 15px; float:right;" 
    value="Submit"
    onstart="return validate();"
    action="#{requestDetailsMB.rejectRequest}"
    oncomplete="performRejectAction();" /> 
于 2013-02-22T18:42:08.807 回答