当前位置: 首页 > 知识库问答 >
问题:

没有触发异步操作

呼延烈
2023-03-14

我有一个Primeface应用程序,其中我启动了一个包含表单的对话框。对话框有一个保存/取消按钮对。在这个对话框中,我无法调用on完成、onstart等方法。我在其他回复中看到原因是没有执行AJAX。但是,我不知道这种情况下的原因,因为命令按钮的类型是提交,并且应该有ajax="true"(默认情况下)。有人能在里面放一点光吗?

我的xhtml:

     <composite:interface>
        <composite:attribute name="bean" required="true"/>
     </composite:interface>

     <composite:implementation>
        <h:outputScript library="careplan" name="js/utils.js" />

        <p:dialog id="addEventDialog" widgetVar="addEventDialog" header="#{careplanMessages['panel.title.eventAdd']}" modal="true" resizable="false">
           <h:form id="eventAddForm" widgetVar="eventAddForm">
              <p:fieldset legend="#{careplanMessages['label.field.data']}" >
                 <h:panelGrid id="formGrid" widgetVar="formGrid" columns="2" cellpadding="5">
                    <p:outputLabel for="parentNode">#{careplanMessages['label.field.parentNode']}</p:outputLabel>
                    <p:inputText id="parentNode" label="#{careplanMessages['label.field.parentNode']}" value="#{cc.attrs.bean.parentNode}" required="true"/>

                    <p:outputLabel for="name">#{careplanMessages['label.field.eventName']}</p:outputLabel>
                    <h:panelGrid columns="2">
                       <p:inputText id="name" label="#{careplanMessages['label.field.eventName']}" value="#{cc.attrs.bean.name}" required="true" />
                       <p:message for="name" display="icon" />
                    </h:panelGrid>

                    <p:outputLabel for="description">#{careplanMessages['label.field.description']}</p:outputLabel>
                    <h:panelGrid columns="2">
                       <p:inputTextarea id="description" label="#{careplanMessages['label.field.description']}" value="#{cc.attrs.bean.description}" rows="6" cols="33" required="true"/>
                       <p:message for="description" display="icon" />
                    </h:panelGrid>

                    <p:outputLabel for="minutes">#{careplanMessages['label.field.minutes']}</p:outputLabel>
                    <h:panelGrid columns="2">
                       <p:spinner id="minutes" label="#{careplanMessages['label.field.minutes']}" value="#{cc.attrs.bean.minutes}" min="0">
                          <f:validateDoubleRange minimum="1.0" />
                       </p:spinner>
                       <p:message for="minutes" display="icon" />
                    </h:panelGrid>

                    <p:outputLabel for="active">#{careplanMessages['label.field.active']}</p:outputLabel>
                    <p:selectBooleanCheckbox id="active" label="#{careplanMessages['label.field.active']}" value="#{cc.attrs.bean.active}" />
                 </h:panelGrid>
              </p:fieldset>

              <p:separator />

              <h:panelGrid columns="2" width="100%">
                 <h:commandButton 
                    value="#{careplanMessages['button.save']}" 
                    onclick="alert ('onclick')" 
                    onstart="alert ('onstart')" 
                    onsuccess="alert ('onsuccess')" 
                    onerror="alert ('onerror')" 
                    oncomplete="alert ('oncomplete')"
                    styleClass="btn btn-default btn-small" />
                 <h:commandButton type="button" value="#{careplanMessages['button.cancel']}" onclick="PF ('addEventDialog').hide()" styleClass="btn btn-default btn-small" />
              </h:panelGrid>
           </h:form>
        </p:dialog>
     </composite:implementation>
  </ui:composition>

这是我的后盾:

  @ManagedBean
  @ViewScoped
  public class HouseLepEventAddBean implements Serializable {

     private static final Logger LOGGER = LoggerFactory.getLogger (HouseLepEventAddBean.class);

     private String name = null;
     private String parentNode = "test";
     private List <SelectItem> parentNodeList = null;
     private String description = null;
     private int minutes = 0;
     private boolean active = true;

     @PostConstruct
     public void init () {

     }

     public String getName () {
        return name;
     }

     public void setName (String name) {
        this.name = name;
     }

     public String getParentNode () {
        return parentNode;
     }

     public void setParentNode (String parentNode) {
        this.parentNode = parentNode;
     }

     public List <SelectItem> getParentNodeList () {
        return parentNodeList;
     }

     public void setParentNodeList (List <SelectItem> parentNodeList) {
        this.parentNodeList = parentNodeList;
     }

     public String getDescription () {
        return description;
     }

     public void setDescription (String description) {
        this.description = description;
     }

     public int getMinutes () {
        return minutes;
     }

     public void setMinutes (int minutes) {
        this.minutes = minutes;
     }

     public boolean isActive () {
        return active;
     }

     public void setActive (boolean active) {
        this.active = active;
     }
  }

谢谢!

共有1个答案

包丁雨
2023-03-14

您正在使用

 类似资料:
  • 问题内容: 我在中有一个(),如果按下该按钮,我将在for循环中对其列表中的列表执行任务。这样做时,我需要更新。 问题是,当我按下JButton时,该任务是在事件调度线程(EDT)中执行的。因此,我无法更新在主线程或UI线程中触发的事件。 现在,源代码对我不可用,因为我完全更改了源代码,并尝试使用Eclipse SWT 触发Swing时,它变得混乱。 现在我得到了错误,因为Display对象在单独

  • 问题内容: 永远不会在我的Angular控制器中触发。下列: 永远不会碰到断点,永远不会弹出警报。我认为这是非常标准的用法,所以我不确定它会是什么,但绝对不会触发。控制器中的其他所有内容均正常运行。 是什么原因造成的? 问题答案: 根据上面的评论,听起来您有这样的事情: 我不确定ng-view标记中的内容会做什么,但是是从ng-view范围 发出 的。这意味着,它只会从上升,因此您的控制器将永远不

  • 概述 定时器 Promise 对象

  • 问题内容: 此代码 在我的标记中 这是完整的ajax请求: 即使gif显示为旋转,也永远不会触发警报“开始”。AjaxStop如预期那样被触发。有什么想法吗? 问题答案: 之所以不会被触发,是因为直到ajax请求执行完 之后 (直到被调用时为止) , 您的处理程序才被注册。在被注册后为好,但 之前 的请求完成,所以当它回来就迷上了运行。 要解决此问题,请 在 首次致电 之前 将其移动: 更新:从j

  • 问题内容: 伙计们,我有一个小问题。我正在尝试实现以下方案: 用户打开主页,看到其他用户的列表,然后单击以将其添加到他的朋友列表。 我向服务器资源发出Ajax请求,以验证用户是否登录,如果是,我向另一个服务器资源发出另一个Ajax请求,以将其实际添加到用户的朋友列表中。 听起来很简单?这是我做的事情:创建了一个函数,该函数将向服务器发出第一个请求,以确定用户是否已登录。我使用方法发出此请求。这是我

  • 我有一个聊天应用程序,当我在输入消息后单击按钮时,消息会发布到我的DynamoDB表中。该应用程序应该发布一次消息,但不知何故发布了两次。 管道如下: 客户端单击“发送”按钮-- 在SO的帮助下,我已经将问题隔离到我的Google Cloud函数异步调用Lambda,该函数将Lambda排队两次。 使用async,请求在实际执行之前排队。所以,如果您调用它一次,AWS将检查是否已经有一个正在执行,