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 :

initialiser l'attribut value d'une treetable de tomahawk


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 79
    Par défaut initialiser l'attribut value d'une treetable de tomahawk
    Salut à tous,

    j'ai besoin d'attribuer un DefaultTreeModel à ma treeTable en java.
    comment peut-on initialiser la valeur de l'attribut value d'un composant <t:tree> de tomahawk en java.

    j'ai essayer divers façon mais sans succès et en plus il n'y a pas de setter setValue() pour le composant. j'ai regarder dans la classe du composant HtmlTree et y a rien mis à part la méthode setValueExpression().

    j'ai alors essayé avec setValueExpression("value", valueExpr) avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ValueExpression valueExpr = context.getApplication().getExpressionFactory().createValueExpression(myDefaultTreeModel, java.lang.Object.class);
    mais ça ne marche pas

    si je défini une t:tree dans ma page jsf je dois lui attribuer une value mais je ne vois pas ce que je pourrai lui donner comme valeur par défaut.
    aussi l'attribut value de la tag <t:tree> est obligatoire mais je voudrais trouvé un moyen d'initialiser cet attribut avant le renderer du composant.

  2. #2
    Membre chevronné Avatar de heid
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2002
    Messages : 388
    Par défaut
    Question idiote : pourquoi pas utiliser le tag value qui appelle une fonction d'un managed bean qui retourne une liste d'éléments à binder?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 79
    Par défaut
    heid a ecrit:



    Question idiote : pourquoi pas utiliser le tag value qui appelle une fonction d'un managed bean qui retourne une liste d'éléments à binder?

    peut-tu expliquer mieux stp, le tag value ??? quel tag value ? et pouquoi faire une méthode qui retourne une liste d'éléments à binder ???

  4. #4
    Membre chevronné Avatar de heid
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2002
    Messages : 388
    Par défaut
    Hummm... ok


    le tag value du <t:tree value = "#{monbackbean.mamethodequiemeretourneunelistedelementaafficherdansmontree}"/>

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 79
    Par défaut
    tu veux parler de l'attribut value ok parceque ce que j'appel tag moi c'est le nom de la balise ainsi l'attribut value du tag t:tree

    maintenant ce que tu me propose n'est pas réalisable car en jsf l'attribut value attend une propriété d'un Bean et non une méthode

  6. #6
    Membre chevronné Avatar de heid
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2002
    Messages : 388
    Par défaut
    maintenant ce que tu me propose n'est pas réalisable car en jsf l'attribut value attend une propriété d'un Bean et non une méthode
    Ok ... here we go :

    tu fais une liste d'élement appellée ListDelement en privée.
    tu lui crée un getter setter
    dans le getter tu fais

    getListedelement{
    if ( ListDelement == null )
    {
    ListDelement = chargerMaListe();
    }
    return ListDelement ;
    }

    dans ta méthode chargerMaListe() tu fais le code qui renvoi les données.

    tu ajoutes un t:savestate dans ta page et dans value tu met ListDelement , ainsi la liste ne sera pas rechargée a chaque post back mais a chaque nouvelle visite de la page.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 79
    Par défaut
    merci heid de ta proposition mais j'ai bien essayer d'initialiser ma treetable à partir de l'accesseur mais je rencontre un souci avec l'instance du bean, je m'explique :

    dans ma page jsf j'ai mis ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <f:view beforePhase="#{initbean.updateTreeTable}" >
    <t:saveState id="saveTreetable" value="#{bean.treeModel}"/>
    <t:tree id="mytreeTable" binding="#{controller.view.myTreetable}"
               value="#{bean.treeModel}"
               var="treeItem"
               ...>
      ...
    </t:tree>
    dans mon bean j'ai ça :

    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 class Bean implements Serializable{
      private DefaultTreeModel  treeModel;
    
      setTreeModel(...)
    
      public DefaultTreeModel getTreeModel() {
    
            if (this.treeModel == null){
    
                FacesContext context = FacesContext.getCurrentInstance();
                //récupération du paramètre id
                HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest();
                String idform = request.getParameter("id");
    
                //création de l'objet et de sa treeTable
                Bean mybean = new Bean(id);
                mybean.createTree(); // la methode createTree() va faire un setTreeModel() avec une instance de TreeModel unique.
    
                return mybean.getTreeModel();
            }
            return treeModel;
        }
    
    }
    en fait ma page jsf reçoit un paramètre id qui à partir de cet id je dois affecter une treetable appropriée,
    le problème que je rencontre c'est que si j'ouvre plusieurs fenètres qui ont reçu des id différentes les unes des autres je devrais avoir une treetable unique pour chaque fenètre
    or j'obtiens toujours la même pour toute mes fenètres cad qu'il prends on compte la dernière instance de treetable crée et il affecte cette treetable à toutes les autres fenètres dejà ouverte.

    donc j'ai essayé de mettre un t:savestate mais le résultat est le même, que dois-je mettre pour le scope de mon bean ??

    comment dire à jsf qu'il sagit d'une nouvelle instance et surtout qu'il ne doit pas effacer les ancienne des fenetres deja ouverte ??

  8. #8
    Membre chevronné Avatar de heid
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2002
    Messages : 388
    Par défaut
    Utilises le scope request et surtout pas session.

    au passage dans ton code tu fais 2 return c'est plus "propre" de faire
    treeModel = mybean.getTreeModel();
    au lieu de
    return mybean.getTreeModel();

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 79
    Par défaut
    bon j'ai résolu en passant par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <f:view beforePhase="methode qui initialise la value expression de mon bean">
    et en ajoutant un t:savestate sur mon bean et avec un scope = application

  10. #10
    Membre chevronné Avatar de heid
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2002
    Messages : 388
    Par défaut
    un save state sur un scope application ça sert a rien ....
    Le save state n'a d'intérêt que sur le scope request, si ton bean est dans la session ou dans l'application , la valeur sera sauvegardée entre deux requêtes.

    A mon avis tu devrais potasser un peut les specs avant de te lancer sur les pages. On ne corrige pas un problème en changeant de scope jusqu'a ce que ça marche et sans en comprendre les implications ...

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 79
    Par défaut
    heid merci de tes explications mais cela fait maintenant 2 semaines que je suis dessus et j'ai bien regarder dans mes bouquins jsf et la solution que j'ai tiré est qu'il faut mettre request en scope mais à noter que ça ne change strictement rien dans mon cas d'application que je mette application ou pas

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

Discussions similaires

  1. Afficher une valeur différente de l'attribut "value" pour un bouton de type submit
    Par verbose dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 07/11/2019, 10h03
  2. initialiser l'attribut value d'un checkbox
    Par rolls dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 27/03/2013, 11h58
  3. [PHP 5.3] initialiser un attribut (un objet) d'une classe
    Par ikuzar dans le forum Langage
    Réponses: 3
    Dernier message: 20/08/2012, 15h29
  4. [C#] attribut value dans une checkedlistbox
    Par igorzup dans le forum Windows Forms
    Réponses: 14
    Dernier message: 05/04/2006, 09h39
  5. Réponses: 4
    Dernier message: 18/11/2003, 16h08

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