IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JSF Java Discussion :

Problème d'appel d'action d'un ManagedBean depuis une page


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Mai 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 9
    Par défaut Problème d'appel d'action d'un ManagedBean depuis une page
    Bonjour,

    Je suis planté sur un problème des plus étranges depuis quelques heures et je n'arrive vraiment pas à trouver de solution.

    Situation :
    J'ai une page contenant un formulaire permettant de traiter une activité (nom, dates, description, etc...).
    J'utilise cette page pour deux fonctions : l'ajout d'une nouvelle activité, et la modification d'une activité existante. Cette solution me paraissait assez logique, puisque j'ai exactement les mêmes champs dans les deux cas.

    Problème :
    Lors de la validation du formulaire (par un bouton), j'appelle une méthode différente sur le ManagedBean pour chaque cas. addActivity() et saveActivity().
    J'ai donc crée deux boutons différents avec l'attribut "rendered" pour gérer les deux cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <h:commandButton action="#{mbActivite.addActivity}" value="Ajouter l'activité" rendered="#{mbActivite.activity.id == 0}"/>
                    <h:commandButton action="#{mbActivite.saveActivity}" value="Modifier l'activité" rendered="#{mbActivite.activity.id != 0}"/>
    //(mbActivite.activity.id est à 0 si je suis dans le cas d'un ajout, et contient l'id de mon activité dans le cas d'une modification)

    Et là, le problème survient. L'appel de la méthode addActivity fonctionne correctement, mais celui de la méthode saveActivity ne fonctionne pas (elle n'est pas du tout appelée, j'ai testé en debug).

    Si j'enlève l'attribut "rendered", les deux boutons s'affichent (normal), et l'appel des deux méthodes fonctionne correctement ( ).

    J'ai également essayé la solution du <c:choice>, mais elle engendre le même problème qu'avec "rendered".

    Voilà, j'espère que quelqu'un a une petite idée de ce qui peut se passer. Merci d'avance.

  2. #2
    Membre du Club
    Inscrit en
    Mai 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 9
    Par défaut
    Alors ce n'est apparemment pas un cas isolé. J'ai ce même problème à chaque fois que j'utilise "rendered" ou <c:choose> (ou <c:if>) pour afficher ou non un bouton.
    (et je ne sais pas si c'est un hasard, mais à chaque fois, le bouton qui teste "...==0" fonctionne et celui qui teste "...!=0" ou "...>0" ne fonctionne pas)

    Est-ce que par hasard il y aurait un concept JSF que je n'aurais pas saisi là derrière ? Ou un bug connu ?

  3. #3
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Il est dans quel scope ton bean?

    les deux buttons ne doivent pas s'afficher en même temps si j'ai bien compris..

  4. #4
    Membre du Club
    Inscrit en
    Mai 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 9
    Par défaut
    RequestScope

    Exactement, les deux boutons ne s'affichent jamais en même temps.

  5. #5
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    au rechargement de la page, ton bean est réinitialiser, il faut le mettre en session si tu veux sauvegarder les valeurs pendants plusieurs requêtes, sinon si tu as Richfaces, utilise a4j:keepAlive.

  6. #6
    Membre du Club
    Inscrit en
    Mai 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 9
    Par défaut
    On est d'accord. Mais à vrai dire je ne crois pas que mon problème soit lié à ça.
    Les valeurs de la page sont correctes, c'est juste que un des deux boutons n'appelle pas la méthode saveActivity() lorsqu'on clique dessus, alors que l'autre appelle bien la méthode addActivity().

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/02/2007, 09h44
  2. Problème pour ouvrir des fichiers .exe et .jar via une page html
    Par coyaote dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 15/02/2007, 12h28
  3. Réponses: 4
    Dernier message: 08/02/2007, 00h32
  4. Action sur le serveur via une page web
    Par raphxyz dans le forum Général Conception Web
    Réponses: 4
    Dernier message: 26/08/2006, 18h07
  5. [APPLET] beans dans applet appelé depuis une page HTML
    Par Néo-Tony dans le forum Applets
    Réponses: 1
    Dernier message: 04/01/2006, 14h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo