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 :

Donner une expression EL à un composant JSF en Java


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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 Donner une expression EL à un composant JSF en Java
    Bonjour,

    Voici un code en JSF :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <h:commandLink action="#{monBean.doSomething}">
        <f:param name="monParam" value="maValue"/>
        ...
    </h:commandLink>
    Ce code marche très bien.

    Maintenant, j'aimerais créer la même chose, mais du côté Java, au lieu de le faire du côté XHTML.
    En gros, faire quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        ...
        HtmlCommandLink link = new HtmlCommandLink();
        UIParameter param = new UIParameter();
        param.setName("monParam");
        param.setValue("maValue");
        link.getComponentInstance().getChildren().add(param);
        ...
    Sauf que je ne sais pas trop comment lui donner la valeur de l'attribut action, dans mon code Java. Idéalement j'aimerais faire quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        link.setAction("#{monBean.doSomething}");
    Je me demandais donc de quelle façon je pouvais donner une expression EL à un composant en Java ?

    Merci.
    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

  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
    Bonjour,

    Je reviens vers vous, car j'ai résolu mon problème.
    Voici mon code maintenant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    HtmlCommandLink link = new HtmlCommandLink();
    MethodBinding mb = context.getApplication().createMethodBinding("#{myBean.doSomething}", null);
    link.setAction(mb);
    UIParameter param = new UIParameter();
    param.setName("myParam");
    param.setValue("myValue");
    link.getChildren().add(param);
    HtmlGraphicImage img = new HtmlGraphicImage();
    img.setValue("/images/myImage.gif");
    link.getChildren().add(img);
    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
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2009
    Messages : 4
    Par défaut
    Merci ça m'a été très utile

  4. #4
    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
    Ca marche, mais il faut noter que cette méthode est dépréciée.

    Il faut plutôt utiliser le getExpressionFactory().createValueExpression(...); maintenant.
    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

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2009
    Messages : 4
    Par défaut
    En faite j'ai un petit soucis, j'utilise toujours JSF 1.1 (je ne peux pas faire autrement) et je n'ai pas les nouvelles méthodes comme getExpressionFactory().createValueExpression(...);

    Et Même si ton code m'a été très utile, l'action de mon commandlink ne fonctionne pas. Le link est apparant sur la page mais lorsque je clique dessus rien ne se produit.

    Quelqu'un aurait un bout de code avec un custom component et son tag en JSF 1.1?

    Je pense que ca risque d'être difficile mais je ne perd pas espoir : D je vais bien pouvoir trouver une solution à ce problème.

    HtmlCommandLink hcl = (HtmlCommandLink) context.getApplication().createComponent(HtmlCommandLink.COMPONENT_TYPE);
    hcl.setId("helpButton");
    hcl.setTransient(true);
    Class[] classe = {ActionEvent.class};
    MethodBinding mb = FacesContext.getCurrentInstance().getApplication().createMethodBinding(getAction().getExpressionString(),classe);
    hcl.setAction(mb);
    hcl.setStyleClass("page-info");
    hcl.setTabindex("-1");

    UIComponent form = getCurrentForm(this);
    if (form != null) {
    form.getChildren().add(hcl);
    }

    hcl.encodeBegin(context);
    hcl.encodeEnd(context);
    Voici la méthode que j'utilise dans mon tag.
    public static void setActionProperty(FacesContext context, UIComponent component, String action) {
    if (action != null) {

    MethodBinding mb;
    if (isValueReference(action)) {
    Class[] classe = {ActionEvent.class};
    mb = context.getApplication().createMethodBinding(action, classe);
    } else {
    mb = new ConstantMethodBinding(action);
    }
    ((PageTitle)component).setAction(mb);
    }
    }
    En vous remerciant : D

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2009
    Messages : 4
    Par défaut
    J'ai résolu mon problème qui était au niveau des restoreState et des saveState.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 16/03/2009, 17h00
  2. Réponses: 2
    Dernier message: 27/06/2008, 10h11
  3. Réponses: 7
    Dernier message: 14/05/2008, 21h50
  4. inserer un composant jsf dans une page PHP
    Par !NyThaX&& dans le forum JSF
    Réponses: 8
    Dernier message: 22/11/2007, 07h28
  5. Réponses: 6
    Dernier message: 02/04/2007, 19h13

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