编程语言
首页 > 编程语言> > java – 在RichFaces中取消Ajax请求

java – 在RichFaces中取消Ajax请求

作者:互联网

我有取消Ajax请求的问题.我们的应用程序界面是RF构建的.

在进度条模式上应该有取消按钮 – 中断当前操作,
例如,从数据库取消填充控件.怎么做?

我尝试使用重新加载页面,带有“if”条件的标志用于控件的getter,还使用“bypassUpdates”而没有正面效果.

在此先感谢您的帮助

XHTML(按钮):

<a4j:commandButton id="showData"
          value="View" styleClass="hBtn"
          disabled="#{events.isButtonsDisabled}"
          oncomplete="if (#{facesContext.maximumSeverity==null}) 
                {window.open('/seed/pages/data.jsf','DATA')};"
          actionListener="#{events.actionShow}"/>

JAVA :(按钮):

public void actionShow(ActionEvent evt) {
    //Some logic, getting data from database

}

XHTML(主页 – 显示等待弹出窗口)

<a4j:form>
    <a4j:status id="ajaxStat"
        onstart="Richfaces.showModalPanel('waitPanel');"
        onstop="#{rich:component('waitPanel')}.hide()" />
</a4j:form>

XHTML(弹出窗口):

<rich:modalPanel id="waitPanel" autosized="true" moveable="false"
         minWidth="250" styleClass="popup">
    <f:facet name="header">
    <h:panelGroup>
        <h:outputText value="Operation in progress"></h:outputText>
    </h:panelGroup>
    </f:facet>
    <f:facet name="controls">
    <h:panelGroup>
        <h:graphicImage value="../images/icons/action_close.gif" styleClass="hidelink" id="hidelink"/>
        <rich:componentControl for="waitPanel" attachTo="hidelink" operation="hide" event="onclick"/>
    </h:panelGroup>
    </f:facet>
    <a4j:form id="msgFrm" ajaxSubmit="true">
    <h:outputText value="Please wait..."/>
    <h:graphicImage styleClass="progressBar" value="../images/indicatorbar.gif"/>
        <a4j:commandButton value="Cancel" type="button"
                   onclick="#{rich:component('waitPanel')}.hide()"
                   action="#{main.cancelAction}"
                   bypassUpdates="true"/>
    </a4j:form>
</rich:modalPanel>   

JAVA(Popup):

public void cancelAction(){
//there was setter for true/false flag for actionShow() here, now there is nothing here (it was not working)
}

解决方法:

重新加载页面会停止所有当前的ajax请求.它不会阻止java后台bean完成请求,但我认为这不是问题.
c:if和ajax渲染不能很好地混合.可能你可以使用’rendered’来禁用更新控件?然后将控件分成两部分.一个显示有效数据,例如亮蓝色.另一个没有任何数据渲染,并具有灰色图片.

但是……我不确定我是否正确理解了这个问题.

编辑23-1-2012:看到代码我会说cancelAction必须设置一个标志,然后完成在actionShow()内运行的操作.然后ajax请求完成,弹出窗口关闭.看不出为什么这不起作用.

标签:java,ajax,jsf,richfaces
来源: https://codeday.me/bug/20190709/1417451.html