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 :

[JSF] un bug de commandLink ?


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2004
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2004
    Messages : 103
    Par défaut [JSF] un bug de commandLink ?
    Bonjour,

    étant nouveau en JSF, je voudrais appeler une méthode métier ListLogin.viewLogin avec le commandLink suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <h:form id="formViewLogin">
                                    <h:commandLink action="#{ListLogin.viewLogin}" id="lnkViewDetails" value="#{bundle.administration_login_listLogin_lnkViewDetails}">
                                        <f:param name="idUser" value="#{user.id}" />                           
                                    </h:commandLink>
                                </h:form>
    Cela semble marcher, la méthode viewLogin est appelée et le paramètre récupéré.

    Cependant, mon problème est double :
    1/ lorsque le code du lien logout est présent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <h:form id="formLogout">
                                Logged User: <h:outputText value="#{UserSession.currentUser.userName}" />
                                <br />               
                                <h:commandLink id="logout" action="#{Logout.viewLogin}" value="#{bundle.common_lnkLogout}" />
                            </h:form>
    Mon lien vers viewLogin ne veut plus fonctionner : il essaie de me rediriger vers l'adresse # (qui je suppose va chercher dans le href du lien javascript généré !).

    2/ Si je mets mon commandLink viewLogin dans une h:datatable, ce qui est le but de l'exercice (un lien "voir les détails" à coté de la liste) c'est encore pire puisque ma page est simplement vidée et rechargée.

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 882
    Par défaut
    Peux tu me donner le code de ta méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public String viewLogin() {
    ...
    return ....;
    }
    qui est associée à:

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2004
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2004
    Messages : 103
    Par défaut
    Il s'agit en fait du même code que j'ai dupliqué dans deux managed beans (pour mes tests) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            FacesContext context = FacesContext.getCurrentInstance();
            HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest();
            String id = request.getParameter("idUser").toString();
    //TODO:some business stuff here
            return "viewLogin";

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 882
    Par défaut
    Peux tu mettre le code de ton navigation-rule associé à ta page???

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2004
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2004
    Messages : 103
    Par défaut
    Ci-après

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        <navigation-rule>
            <from-view-id>/administration/login/listLogin.xhtml</from-view-id>
            <navigation-case>
                <from-outcome>viewLogin</from-outcome>
                <to-view-id>/administration/login/viewLogin.xhtml</to-view-id>
            </navigation-case>
            <navigation-case>
                <from-outcome>changePassword</from-outcome>
                <to-view-id>/administration/login/changePassword.xhtml</to-view-id>
            </navigation-case>
        </navigation-rule>

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 882
    Par défaut
    1. au niveau de ce code là:
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      String id = request.getParameter("idUser").toString();
      aucune exception du type
      est affichée dans ta console car ca pourrait être une cause de ton erreur, le code plante...

    2. Vérifie que ta méthode est bien appelée, ca peut te parraitre idiot mais des fois ca arrive

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    511
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 511
    Par défaut
    Une petite chose à verifié aussi. je vois que t'utilise 2 <h:form> : <h:form id="formViewLogin"> et <h:form id="formLogout">. Sont ils imbriqués ou non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <h:form id="formLogout">
    ........
    ........
       <h:form id="formViewLogin"> 
       ................
       </h:form>
    </h:form>
    Si tu est dans ce cas, ton erreur peut venir de la.

  8. #8
    Membre confirmé
    Inscrit en
    Mars 2004
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2004
    Messages : 103
    Par défaut
    Il y a deux possibilités :
    1/ le commandLink logout n'existe pas --> le commandLink viewLogin exécute bien ma méthode viewLogin.

    2/ le commandLink logout existe --> le commandLink viewLogin essaie d'afficher l'URL #.

    Edit : non les deux forms ne sont pas imbriqués. J'avais déjà fait l'erreur, dans ce cas, le commandLink ne s'affiche pas.

    Edit 2 : et en fait, lorsque j'inverse les deux commandLink, viewLogin marche et logout plus...

  9. #9
    Membre confirmé
    Inscrit en
    Mars 2004
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2004
    Messages : 103
    Par défaut
    Point important :
    j'ai oublié de préciser que je désire utiliser le tag commandLink dans une datatable et que j'utilise les facelets...

    Apparemment pour les facelets, on utiliserait plutôt panelGrid ?

  10. #10
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    511
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 511
    Par défaut
    Pourrais tu essayer de n'utiliser qu'un seul <h:form> pour tous tes commandLink ?

    Sinon as tu le meme probléme avec des commandButton ?

    En ce qui concerne facelet je ne l'utilise pas mais je ne pense pas que ce soit la cause de ton erreur....

  11. #11
    Membre confirmé
    Inscrit en
    Mars 2004
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2004
    Messages : 103
    Par défaut
    Ecoute, j'ai trouvé exactement mon problème sur le site officiel :

    http://forum.java.sun.com/thread.jsp...549675&start=0

    Le problème : il y a un bug dans JSF qui empêche un commandLink de fonctionner correctement dans une dataTable.
    Cela m'étonne que personne ne soit tombé sur ce bug avant moi...

    Je marque comme résolu étant donné qu'il y a des workarounds pour résoudre le problème... même si ça tient plus du bricolage javascript pur et dur...

  12. #12
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    511
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 511
    Par défaut
    heu... regarde la date du post sur le site de sun : Aug 25, 2004 .

    Depuis 2004 le bug à été résolu. J'utilise d'ailleurs des commandLink dans mes datatable sans probléme. Par contres des problémes apparaissent des que je met plusieurs <h:form>. C'est pour cela que j'en ai qu'un seul dans toutes mon appli.

  13. #13
    Membre confirmé
    Inscrit en
    Mars 2004
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2004
    Messages : 103
    Par défaut
    Oui mais je n'ai pas de form imbriqué... je n'en garde qu'un seul et le problème arrive toujours... j'ai exactement ce comportement étrange "le commandLink marche en dehors de la dataTable mais pas en dedans".

    J'utilise l'implémentation de Sun 1.1. fournie par MyEclipse.
    J'ai déjà étudié des solutions de secours, mais si tu peux m'aider plus en avant, je suis prêt à t'envoyer les sources problématiques.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. JSF CommandLink au sein DataTable
    Par essaine dans le forum JSF
    Réponses: 2
    Dernier message: 12/04/2010, 11h55
  2. JSF dataTable commandLink
    Par Nemesys1976 dans le forum JSF
    Réponses: 5
    Dernier message: 24/01/2010, 22h30
  3. jsf commandLink tag
    Par glasgow dans le forum JSF
    Réponses: 4
    Dernier message: 02/02/2009, 09h24
  4. commandlink et datatable en jsf
    Par quick dans le forum JSF
    Réponses: 2
    Dernier message: 16/06/2008, 17h45
  5. h:commandLink et jsf
    Par halima.2008 dans le forum JSF
    Réponses: 2
    Dernier message: 08/04/2008, 14h41

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