2014-07-23 3 views
0

Alors que la mise à niveau d'un grand projet de Mojarra 2.1.13 à 2.1.28, nous avons remarqué que toutes les mesures et les méthodes actionEvent sur h: commandButton dans une page où appelés pour chaque requête ajax qui a exécuté le formulaire. Nous avons pu réduire le problème à commandButton avec type = "button". Cela fonctionnait bien dans 2.1.13, mais après la mise à niveau, un clic sur un bouton déclenche les actions de tous les autres.Mojarra toutes les actions et commandButton actionEvent est appelé à chaque demande ajax

Ci-dessous le code utilisé pour recréer la question:.

<h:form id="form"> 

     <h:commandButton type="button" value="Action1" action="#{page1.action1}"> 
      <f:ajax execute="@form" render="@form" /> 
     </h:commandButton>  
     <h:commandButton type="button" value="Action2" action="#{page1.action2}"> 
      <f:ajax execute="@form" render="@form" /> 
     </h:commandButton> 
     <h:commandButton type="button" value="Action3" action="#{page1.action3}"> 
      <f:ajax execute="@form" render="@form" /> 
     </h:commandButton> 

</h:form> 

Notez que cela ne se produit pas lorsque le type de bouton est pas défini ou est réglé sur « Soumettre On dirait que ce comportement a été introduit avec Mojarra . 2.1.14

quelqu'un at-il vu cela avant y a-t-il des considérations pour la suppression du type = « button » de ces touches, notamment en ce qui concerne le cycle de vie de la demande? (c.-à - validation)

+1

Malgré ce comportement pourrait être considéré comme un bug dans le cadre, le « bouton » 'type =' ne vise pas à invoquer une méthode d'action dans le côté serveur. Il est généralement utilisé pour invoquer du code lié au client, normalement javascript. Donc, dans ce cas, cet attribut est inutile et mal utilisé. –

+0

Cela a du sens. Donc, le bug était en pré 2.1.14 en ce qu'il permettait à cela de fonctionner correctement. Le cadre devrait jeter une erreur cependant pour empêcher un tel code. –

Répondre

Questions connexes