0

我有一个相对简单的数据表,其中包含请求列表。我有用于批准和拒绝的命令按钮以及顶部的消息部分以提供反馈。

对于批准,我只需处理所有内容并刷新数据表和消息,但对于拒绝,我想提示用户输入消息。无论我似乎在做什么,我都无法在对话框关闭时同时显示数据表更新和消息。我能做到的最好的事情是在对话框关闭时消息显示几毫秒。

所以我的页面以消息、表单和数据表开头

   <h:form id="form">

      <p:messages id="messages" showDetail="true" closable="true">
         <p:autoUpdate />
      </p:messages>

      <p:dataTable id="dtReqs" allowUnsorting="true" sortMode="single" value="#{myBean.openRequests}" var="req">

然后我有一个命令按钮来处理拒绝

<p:column headerText="Reject" width="60">
    <p:commandButton icon="pi pi-times" styleClass="rounded-button ui-button-danger"
               oncomplete="PF('rejectDlg').show()">
        <f:setPropertyActionListener value="#{req}" target="#{myBean.selectedRequest}" />
    </p:commandButton>
</p:column>

最后是一个对话框来获取用户输入

<p:dialog id="inputDialog" widgetVar="rejectDlg" header="Enter Rejection Explanation" modal="true">         
    <p:ajax event="close" update=":form:dtReqs" />
    <p>Please enter a reason for rejection</p>
    <p:inputTextarea id="rejectReasonText" rows="5" cols="60" value="#{myBean.userMessage}" />
    <br /> <br />
    <p:commandButton value="Reject" action="#{myBean.processRejection}"
           icon="pi pi-times" styleClass="ui-button-danger" />
    <p:commandButton value="Cancel" onclick="PF('rejectDlg').hide()" />      
</p:dialog>

然后ViewScoped烤豆有

public void procesRejection() {
  //handle updates and update variables

  FacesMessage msg = new FacesMessage("Title", "Content");
  FacesContext.getCurrentInstance().addMessage(null, msg);

}

使用代码,当您单击对话框上的拒绝按钮时,它会执行它需要执行的所有处理(并且工作正常)并且消息显示在对话框后面但表单不会关闭并且数据表仅在以下情况下更新单击取消或 x 关闭对话框。

我尝试添加oncomplete拒绝按钮以关闭表单,虽然这可以工作并更新数据表,但消息会闪烁一毫秒,然后与表单一起消失。我尝试过以processRejection达到相同结果的方法关闭表单。

删除 ajax 关闭事件并添加oncomplete到拒绝按钮以关闭对话框会关闭对话框并显示消息,但不会刷新数据表。

如何在提示用户输入一些文本时达到我想要的效果,然后

  • 关闭对话框
  • 刷新数据表
  • 显示信息
4

0 回答 0