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 :

Hyperlien, affiche-toi !


Sujet :

JSF Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 28
    Par défaut Hyperlien, affiche-toi !
    Bonjour,

    Je m'autoforme à JSF et par moment... j'ai vraiment envie de changer de métier.
    Pour m'aider à changer d'avis, avez-vous une idée de l'origine du comportement suivant, que j'observe stupéfait depuis plusieurs heures :

    Premier essai :

    Mon JSF :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <h:commandLink value="ok" action="dexin" />
    Résultat :
    Soit... je m'y prend sans doute mal... je change un peu :

    Mon JSF :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <h:commandLink value="ok" action="dexin">
        <h:outputText value="toto" />
    </h:commandLink>
    Résultat :
    Je ne me suis pas attardé sur les logs, j'ai simplement regardé dans server.log de GlassFish mais rien n'apparait lorsque je raffraichi la page.

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Dans quel navigateur l'as tu testé? IE j'imagine ?

  3. #3
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    as-tu effacé tes cookies? Facelets recharge bien les pages de template dynamiquement, mais pour les composant qui étaient déjà présent, les attributs ne sont pas réinitialisé, ce qui explique le comportement (le nouveau outputtext apparait mais les changement dans les attribut du outputlink n'apparaissent pas).

    donc première chose à faire: effacer ta session user pour recommencer avec une toute fraiche

    Ensuite, si ca foire toujours, nous donner toute la page.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 28
    Par défaut
    Dans quel navigateur l'as tu testé? IE j'imagine ?
    Mon dieu, non !

    Bon, aucun rapport avec le navigateur utilisé et les cookies... pas étonnant non plus puisque je "clean & build" et redéploie l'appli à chaque fois.

    En plus, créer des cookies pour une appli quasi de type "Hello World", je trouve ça useless mais bon... c'est pas le propos

    Donc voilà mon code, si je n'oublie rien :

    index.jsp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">
     
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>JSP Page</title>
        </head>
        <body>
        <h2>Index</h2><f:view>
     
                <!-- voilà une chose qui fonctionne par contre -->
                <ul>
                <c:forEach var="personne" items="#{personnes.listPersonnes}">
                    <li><h:outputText value="#{personne.nom}" /></li>
                </c:forEach>
                </ul>
     
                <!-- et ici la chose qui ne fonctionne pas -->
                <br /><br />
                <h:commandLink value="ok" action="dexin">
                    <h:outputText value="toto" />
                </h:commandLink>
            </f:view>
        </body>
    </html>
    Le faces-config.xml (une partie) qui spécifie bien que, de la page index.jsp, sur action "dexin", je me retrouve sur la page dexin.jsp (qui existe) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        <navigation-rule>
            <from-view-id>/index.jsp</from-view-id>
            <navigation-case>
                <from-outcome>dexin</from-outcome>
                <to-view-id>/dexin.jsp</to-view-id>
            </navigation-case>
        </navigation-rule>
    J'ai oublié un truc ?

  5. #5
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    A mon avis, mettre les commandLink dans un <h:form> ça aiderait déjà pas mal !
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    +1 les commandlink servent à remplacer un bouton de formulaire par un lien. Il soumet un formulaire. Si t'as pas de formulaire à soumettre, alors c'est que tu utilise un commandlink là où un <a> suffisait amplement.


    Les cookies sont nécessaires à gérer la session, session dont a besoin JSF pour stocker ses beans et faire le suivi du formulaire.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 28
    Par défaut
    En effet, ça valait le coup de se prendre la tête tiens...

    Donc pour résumer, soit on veut faire un lien de validation dans un formulaire et on fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <h:form>
        Blah blah blah
        <h:commandLink value="ok" action="dexin" />
    </h:form>
    soit on veut faire un lien tout bête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <h:outputLink value="dexin.jsp">
        <h:outputText value="dexin" />
    </h:outputLink>
    Je tiens juste à faire remarquer que (j'aime bien critiquer ) le code généré par la première solution génère un attribut "onclick". Je m'y attendais vu que le seul moyen de valider un formulaire via un simple lien, c'est d'utiliser le javascript... mais... qu'est-ce que c'est moche !

    Ok pour les cookies, c'est souvent ça quand on utilise un framework, ou un "gros" machin.

    En tout cas merci

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

Discussions similaires

  1. afficher des messages texte avec hyperliens dans un carroussel
    Par billybobbonnet dans le forum Windows Presentation Foundation
    Réponses: 8
    Dernier message: 27/08/2014, 15h30
  2. Hyperlien avec paramètre pour afficher une info d'une base SQLite
    Par olivier.eckmann dans le forum Android
    Réponses: 2
    Dernier message: 22/01/2013, 12h09
  3. [XL-2003] Afficher un hyperlien vers fichier Excel dans un fichier Excel
    Par belgudo dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/06/2011, 16h26
  4. afficher hyperlien dans mon site lorsque je clique sur le lien
    Par Richard80 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 23/02/2011, 17h18
  5. [XSLT 1.0] afficher hyperlien
    Par The_Big_Lebowski dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 14/01/2011, 17h10

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