Version 4

    How to show a "Please Wait" box and block the input while the Ajax request is processed

     

    You can use a combination of a4j:status and rich:modalPanel. This is a code snippet:

     

     

    <a4j:status onstart="Richfaces.showModalPanel('ajaxLoadingModalBox',{width:450, top:200})" 
         onstop="Richfaces.hideModalPanel('ajaxLoadingModalBox')"></a4j:status>
    ....
    
    <rich:modalPanel id="ajaxLoadingModalBox" minHeight="200" minWidth="450" 
            height="100" width="250" zindex="2000">
         <f:facet name="header">
              <h:outputText value="Request being processed"></h:outputText>
         </f:facet>
         <h:outputText value="Your request is being processed, please wait."></h:outputText>
    </rich:modalPanel> 

     

    You can also set timeout before showing modal panel. This example is for timeout 500 ms:

     

    <script type="text/javascript">
         var infoWindowAMShown = false;
         var infoWindowAMTimer;
         function showModalInfoWindow()
         {
              infoWindowAMTimer = setTimeout("if(!infoWindowAMShown){Richfaces.showModalPanel('ajaxLoadingModalBox');infoWindowAMShown=true;}", 500);
         }
         function hideModalInfoWindow()
         {
              if (infoWindowAMShown){Richfaces.hideModalPanel('ajaxLoadingModalBox');infoWindowAMShown=false;}else{if(infoWindowAMTimer)clearTimeout(infoWindowAMTimer);}
         }
    </script>
    
    
    <a4j:status onstart="showModalInfoWindow();" 
         onstop="hideModalInfoWindow()"></a4j:status>
    ....
    
    <rich:modalPanel id="ajaxLoadingModalBox" minHeight="200" minWidth="450" 
            height="100" width="250" zindex="2000">
         <f:facet name="header">
              <h:outputText value="Request being processed"></h:outputText>
         </f:facet>
         <h:outputText value="Your request is being processed, please wait."></h:outputText>
    </rich:modalPanel> 

     

    -


    Source: Jboss RichFaces forum