2010-11-17 6 views
0

Considérons cet exemple de code:RichFaces TabPanel - Évitez la soumission multiple lorsque l'utilisateur double-cliquez sur un onglet

<rich:tabPanel switchType="ajax"> 
    <rich:tab label="tab1"> 
     ... 
    </rich:tab> 
    <rich:tab label="tab2"> 
     ... 
    </rich:tab> 
</rich:tabPanel> 

Cela va créer un panneau simple onglet avec 2 onglets, le contenu du <rich:tabPanel> est actualisé en utilisant Ajax.

Donc, si je suis sur tab1 et que je clique sur tab2, une requête Ajax est envoyée au serveur pour obtenir le contenu tab2. Mon souci est que si l'utilisateur clique deux fois sur tab2, alors deux requêtes Ajax seront envoyées (il y aura en fait autant de demandes envoyées que le nombre de fois où l'utilisateur cliquera rapidement sur cet entête d'onglet).

Donc, ma question est de savoir comment éviter l'envoi de plusieurs demandes, même si l'utilisateur clique plusieurs fois sur l'en-tête de l'onglet?

J'ai essayé de régler ondblclick="return false;" sur les deux <rich:tab> et <rich:tabPanel>, mais cela n'a pas résolu mon problème.

Répondre

0

Vous pouvez utiliser une fenêtre contextuelle qui s'affiche à l'utilisateur lors d'une requête ajax. Ainsi, l'utilisateur ne peut pas cliquer sur les boutons onglets, etc., par exemple,

<a4j:status id="commonAjaxStatus" onstart="javascript:Richfaces.showModalPanel('ajaxLoadingPanel')" 
    onstop="javascript:Richfaces.hideModalPanel('ajaxLoadingPanel')"> 
    <f:facet name="start"> 
     <r:modalPanel id="ajaxLoadingPanel" moveable="false" resizeable="false" width="239" height="40" zindex="1000"> 
      <h:graphicImage value="../img/ajax-loader.gif" /> 
     </r:modalPanel> 
    </f:facet> 
    <f:facet name="stop"> 
    </f:facet> 
</a4j:status> 

Si ce code vous insérez dans votre page, sur demande ajax une fenêtre sera ouverte et lorsque la demande se termine, pop-up disparaîtra.

Questions connexes