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 :

Création composant : Lien vers un bean?


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 104
    Par défaut Création composant : Lien vers un bean?
    Bonjour,

    Je crée un composant, mais je dois renvoyer un lien par exemple vers monBean.activer !
    Comment déclarer cela dans le composant?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    responseWriter.writeAttribute("href", FacesContext.getCurrentInstance().getApplication().createValueBinding("#{monBean.activer}").getValue(facesContext) , "href");
    J'ai testé cela mais ca n'a pas trop l'air d'être ca!

    Merci

  2. #2
    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 : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Il faut faire un monCommandButton.setAction(...) (tu remplaces ... par ce que tu as écrit).
    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

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 104
    Par défaut
    En fait, je dois intégrer des composants dans mon composant?

    Voici ce que j'essaie de faire:

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
        public void encodeEnd(FacesContext facesContext) throws IOException {
            String style = new String ();
            ResponseWriter responseWriter = facesContext.getResponseWriter();
            // Encode le contrôle page suivante
            responseWriter.startElement("div", this);
            responseWriter.writeAttribute("class", "leftCol clearfix", "class");
            responseWriter.writeAttribute("id", "metaNav", "id");
            responseWriter.startElement("div", this);
            responseWriter.writeAttribute("class", "leftColInner rightFloat", "class");
            responseWriter.startElement("ul", this);
            responseWriter.writeAttribute("class", "langNav horizontal clearfix", "class");
     
            // NL
            responseWriter.startElement("li", this);
            style = "first";
            if (this.util.isLangNL()) {
                style = style + " active";
            }
            responseWriter.writeAttribute("class", style, "class");
            responseWriter.startElement("a", this);
            responseWriter.writeAttribute("href", "#" , "href");
            responseWriter.writeAttribute("title", "Nederlands" , "title");
            responseWriter.writeAttribute("lang", "nl" , "lang");
            responseWriter.write("nl");
            responseWriter.endElement("a");
            responseWriter.endElement("li");
     
            // FR
            responseWriter.startElement("li", this);
            style = "";
            if (this.util.isLangFR()) {
                style = style + " active";
            }
            responseWriter.writeAttribute("class", style, "class");
            responseWriter.startElement("a", this);
            responseWriter.writeAttribute("href", FacesContext.getCurrentInstance().getApplication().createValueBinding("#{util.langFR}").getValue(facesContext) , "href");
            responseWriter.writeAttribute("title", "Français" , "title");
            responseWriter.writeAttribute("lang", "fr" , "lang");
            responseWriter.write("fr");
            responseWriter.endElement("a");
            responseWriter.endElement("li");
     
            // EN
            responseWriter.startElement("li", this);
            style = "last";
            if (this.util.isLangEN()) {
                style = style + " active";
            }
            responseWriter.writeAttribute("class", style, "class");
            responseWriter.startElement("a", this);
            responseWriter.writeAttribute("href", FacesContext.getCurrentInstance().getApplication().createValueBinding("#{util.langEN}").getValue(facesContext) , "href");
            responseWriter.writeAttribute("title", "English" , "title");
            responseWriter.writeAttribute("lang", "en" , "lang");
            responseWriter.write("en");
            responseWriter.endElement("a");
            responseWriter.endElement("li");
     
     
     
            responseWriter.endElement("ul");
            responseWriter.endElement("div");
            responseWriter.endElement("div");
        }
    C'est juste pour créer une barre de navigation dans les 3 langues, j'ai juste le lien pour activer la langue quand on clique dessus qui ne fonctionne pas!

    Je devrais y intégrer le comportement d'un commandLink, mais je ne vois pas trop comment faire

  4. #4
    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
    le commandelink utilise du javascript pour effectuer la soumission du formulaire. Tu dois donc faire quelque chose de similaire:

    soumettre le formulaire courrant après avoir défini, dans un champ hidden, un variable qui servira à ton composant lors du decode() à déterminer que c'est sur ce lien là qu'on a cliqué.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 104
    Par défaut
    Personne n'aurait un exemple ou un tuto qui expliquerait comment faire?
    Car ca me semble assez complexe

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 104
    Par défaut
    Apparement je dois faire un truc du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    responseWriter.writeAttribute("href","javascript:document.forms[0].submit();
    ","href");
    responseWriter.writeAttribute("onclick","document.getElementById('" + clientId
    +"').value = 'prev';return true;","onclick");
    puis ecrire le decode() mais je ne vois pas comment l'écrire le décode! je vais encore chercher si qqun a une petite idée elle est la bienvenue!

    Merci

  7. #7
    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
    le but du decode c'est simplement de prendre la liste des paramètres soumis par le browser et, dans cette soupe, extraire ce qui concerne ton composant. Ensuite, si tu en conclue qu'on a fait une action, faudra, lors de la phase d'action, effectuer cette navigation.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 104
    Par défaut
    Bon voila, j'ai ma classe qui hérite de UICommand

    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
    public void encodeEnd(FacesContext facesContext) throws IOException {
            ResponseWriter responseWriter = facesContext.getResponseWriter();
     
            this.styleClass = (String) getAttributes().get("styleClass");
            this.act = (String) getAttributes().get("act");
            this.title = (String) getAttributes().get("title");
            this.lang = (String) getAttributes().get("lang");
            this.text = (String) getAttributes().get("text");
            String active = (String) this.getParent().getAttributes().get("activeStyleClass");
     
            responseWriter.startElement("li", this);
            if (this.util.isLang(this.lang)) {
                this.styleClass = this.styleClass + " " + active;
            }
            responseWriter.writeAttribute("class", this.styleClass, "class");
            responseWriter.startElement("a", this);
            responseWriter.writeAttribute("href", "#", "href");
            responseWriter.writeAttribute("title", this.title, "title");
            responseWriter.writeAttribute("lang", this.lang, "lang");
            this.setValue(this.text);
            this.setAction(facesContext.getApplication().createMethodBinding(this.act, null));
     
            responseWriter.endElement("a");
            responseWriter.endElement("li");
        }
    Donc ici j'ai bien tous les éléments, il ne reste qu'a mettre mon lien, mais je ne sais pas comment le mettre :s mon expression est mise dans le setAction() mais après?

  9. #9
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Par défaut
    Je comprend pas l'utilité de ton composant à part de redéfinir un composant actuel qui fonctionne bien et dont les attributs sont les mêmes ...

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 104
    Par défaut
    Non ce n'est pas tout à fait le même, y a des balises de styles différentes, une gestion des accès à l'application!
    Soit, j'ai contourné le problème!

    Merci pour votre aide

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

Discussions similaires

  1. [Drupal] Création d'une page et lien vers la création d'un contenu
    Par dubitoph dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 24/10/2011, 16h20
  2. [OL-2010] Création d'un lien vers un fichier dans Outlook
    Par mumu27 dans le forum Outlook
    Réponses: 1
    Dernier message: 24/06/2011, 12h20
  3. [AC-2007] création des liens vers les vues sql
    Par gwent dans le forum Projets ADP
    Réponses: 1
    Dernier message: 07/12/2010, 15h19
  4. [PDF] Création lien vers ancrage sur document PDF
    Par Greatz dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 04/12/2008, 18h06
  5. Réponses: 1
    Dernier message: 26/09/2007, 17h50

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