Primefaces bouton de commande des appels de méthode d'action sur l'actualisation de la page

Complètement modifié:
J'étais peut-être le mélange des problèmes et mal interprété. Après simplifier mon code, la question se simplifie en: Comment puis-je empêcher le <p:commandButton> de l'exécution de la méthode d'action sur l'actualisation de la page (par exemple, lorsque vous appuyez sur la touche F5 à l'intérieur de la fenêtre du navigateur)?

JSF Code:

   <html xmlns="http://www.w3.org/1999/xhtml"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:f="http://java.sun.com/jsf/core"
        xmlns:ui="http://java.sun.com/jsf/facelets"
        xmlns:p="http://primefaces.org/ui">
    <h:body>
        <h:form>
            <h:outputText value="#{bugBean.number}" />
            <h:outputText value="#{bugBean.isComplete()}" />
            <p:commandButton id="entryCommand" value="add"
                action="#{bugBean.increase()}" update="@form" oncomplete="#{bugBean.complete()}"/>
        </h:form>
    </h:body>
    </html> 

backing bean code:

  package huhu.main.managebean;
import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
import javax.inject.Named;

@Named
@SessionScoped
public class BugBean implements Serializable {

   private static final long serialVersionUID = 1L;
   private int number;
   private boolean isComplete = false;

   public void increase(){
      number++;
   }

   public void complete(){
      isComplete = true;
   }

   public int getNumber() {
      return number;
   }

   public void setNumber(int number) {
      this.number = number;
   }

   public boolean isComplete() {
      return isComplete;
   }

   public void setComplete(boolean isComplete) {
      this.isComplete = isComplete;
   }
}

Mise à jour:
Même si je supprime le oncomplete des trucs comme ça un cliquez sur le <p:commandButton> juste une fois, le compteur va jusqu'à chaque actualisation de la page.

<h:form>
        <h:outputText value="#{bugBean.number}" />
        <p:commandButton id="entryCommand" value="add"
            action="#{bugBean.increase()}" update="@form"/>
    </h:form>
  • Avec "rafraîchir la page", tu veux dire qu'en appuyant sur la touche F5/Ctrl+R dans le webbrowser?
  • Ouais, c'est ce que je voulais dire!
  • Post le reste de votre page ici, pour donner un peu de contexte.
  • Je ne comprends pas votre question. Un bouton de commande de ne pas exécuter lorsqu'une page est actualisée, il s'exécute lorsque le bouton est pressé. Pouvez-vous préciser?
  • C'est pourquoi il y a un problème. La méthode EST appelée lors de l'actualisation. Encore et encore.
  • Qui ne se reproduit pas sur Chrome 22 / FF 16 / IE 9. Le navigateur exactement utilisez-vous? Êtes-vous de l'actualisation de l'initiale de la requête GET ou l'ajax requête POST?
  • Je suis en utilisant google Chrome 22. Je viens de cliquer sur le bouton une fois, la j'ai actualiser la page avec la touche F5.
  • même avec FF 16, mais que l'on me prévient que toute action, qui a été réalisée, peut être effectuée à nouveau. yeaaaaaah, n'chrome m'avertir trop? oui il l'a fait. donc je suppose que c'est la réponse...
  • mais n'est-ce pas là une façon d'empêcher que la double forme de soumission à l'actualisation sans toucher la possibilité de cliquer sur le bouton plusieurs fois sur le but?
  • Sonne comme que la demande n'a pas été exécutée par ajax (de manière asynchrone), mais juste régulièrement (de façon synchrone). Cela peut se produire si vous avez ajax="false" dans votre vraie bouton de commande de code (ce qui n'est pas présent dans le code posté jusqu'à présent). N'avez-vous pas trop simplifier le code en question sans le tester?
  • En fait cette fois-ci j'ai vraiment pris vos conseils à cœur, pour créer une nouvelle xhtml-fichier et un nouveau backing bean pour être en mesure de montrer le code complet. Et c'est le cas ici. Seule modification est l' <h:form> (voir mise à Jour) que j'ai effacé de tous les oncomplete-trucs après la chute de ce problème. Ce que vous voyez est vraiment mon code complet. Et vous avez raison, la demande semble être effectuées régulièrement, comme de mon navigateur (Chrome 22) de l'actualisation du bouton s'allume en un fragment de seconde dans un arrêt-bouton qui indique que quelque chose est chargé. Je l'ai comparé avec d'autres requêtes ajax - ne pas afficher ce comportement.

InformationsquelleAutor Lester | 2012-10-31