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 :

[Tomahawk] Datatable et TreeTable


Sujet :

JSF Java

Vue hybride

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

    Informations forums :
    Inscription : Septembre 2007
    Messages : 79
    Par défaut [Tomahawk] Datatable et TreeTable
    Salut à tous,

    est-il possible d'inclure une treeTable dans une datatable ?

    je m'explique, je dispose d'une datatable qui affiche le contenu d'une liste List<myobject>, pour chaque objet de cette list je dispose d'un attribut treeModel qui correspond à l'objet DefaultTreeModel de (org.apache.myfaces.custom.tree.model.DefaultTreeModel)

    voici le code partiel de la classe MyObject.java

    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
     
     
    public class MyObject {
    ...
     
     private DefaultTreeModel treeModel;
        public DefaultTreeModel getTreeModel() {
            return treeModel;
        }
     
        public void setTreeModel(DefaultTreeModel treeModel) {
            this.treeModel = treeModel;
        }
    ...
     
    }
    pour afficher la treetable associée à chaque ligne je procède comme ceci dans ma page jsf:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    <t:dataTable value="#{bean.list}" var="myobject">
       ...
        <t:tree value="#{myobject.treeModel}" var="treeItem" expandRoot="true">
            ...
        </t:tree>
      ...
    </t:datatable>
    sachant que l'arbre treeModel est bien créer pour chaque ligne et il diffère d'une ligne à l'autre; (2 lignes n'auront pas le même arbre) j'obtien l'erreur suivante lors de l'exécution:

    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
    javax.faces.el.PropertyNotFoundException: javax.el.PropertyNotFoundException: Target Unreachable, identifier 'myobject' resolved to null
    	com.sun.faces.application.ValueBindingValueExpressionAdapter.setValue(ValueBindingValueExpressionAdapter.java:154)
    	org.apache.myfaces.custom.tree.taglib.TreeTag.doStartTag(TreeTag.java:349)
    	org.apache.jsp.Search_jsp._jspx_meth_t_005ftree_005f0(Search_jsp.java:10749)
    	org.apache.jsp.Search_jsp._jspx_meth_h_005fpanelGroup_005f24(Search_jsp.java:10694)
    	org.apache.jsp.Search_jsp._jspx_meth_h_005fpanelGrid_005f14(Search_jsp.java:9922)
    	org.apache.jsp.Search_jsp._jspService(Search_jsp.java:1380)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    	com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:415)
    	com.sun.faces.application.ViewHandlerImpl.executePageToBuildView(ViewHandlerImpl.java:458)
    	com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:126)
    	org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)
    	org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:216)
    	com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
    	com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:274)
    	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:154)
    	javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
    	org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)
    	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
    	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)

    il semblerai que jsf attend un bean et non une variable pour la valeur de l'attribut value de <t:tree>

    j'ai biensûre essayer de déclarer la variable myobject comme étant aussi un bean c'est à dire qu'elle est non seulement une variable mais aussi un bean et le résultat obtenu est tout a fait étrange, j'obtient pour chaque ligne le même arbre.

    merci de votre aide.

  2. #2
    Membre éclairé Avatar de maloups
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Par défaut
    Ce que tu essaye de faire me semble bien étrange

    D'abord, je ne sais pas si c'est faisable... mais si j'avais tenté la chose, j'aurais plutot opté pour un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <t:dataTable value="#{bean.list}" var="myVar">
       ...
        <t:tree value="#{myVar.treeModel}" var="treeItem" expandRoot="true">
            ...
        </t:tree>
      ...
    </t:datatable>
    En m'assurant que "list" contient uniquement des "MyObject"
    Sans oublier de faire un getList() et un setList dans "bean"

    Voili voilou

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

    Informations forums :
    Inscription : Septembre 2007
    Messages : 79
    Par défaut
    salut maloups
    le nom de la variable n'est pas très important il me semble, j'utilise myobject comme j'aurais pu utiliser autre chose

    concernant la liste, elle conteint bien des objets de type MyObject.

  4. #4
    Membre éclairé Avatar de maloups
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Par défaut
    En effet le nom de la variable n'est pas important, mais comme tu utilises un objet qui s'appel "MyObject" j'ai pensé qu'il y avait confusion

    Sinon, j'imagine que tu as bien un getter et un setter pour 'list" avec les majuscules bien comme il faut ?

    De même que tu encadres bien ton <tree.../> par les balises <t:column...> ????

    Sinon, va faire un tour du coté de la doc Datatable pour jeter un coup d'oeil au différent paramètre possible... j'ai connu pas mal de problème avec de mauvais paramètre.... c'est pas toujours évident de trouver les bons

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

    Informations forums :
    Inscription : Septembre 2007
    Messages : 79
    Par défaut
    oui tout est bien dans les règles de l'art lol si j'ai mis les 3 petits points c'est pour montrer qu'il y a du code en plus les balises <t:column...> etc...

    c'est juste pour allèger mon post et ainsi montrer uniquement l'essentiel

    Lorsque tu parles des différent paramètre possible, à quoi tu fais réference ??

  6. #6
    Membre éclairé Avatar de maloups
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Par défaut
    bah par exemple, j'ai pu observer des comprtement très étranges si je ne mettait pas :
    preserveDataModel="true"
    ou bien
    forceId="true"

    (Par defaut à false)

    Tu trouveras la description de chaque attribut ici : http://myfaces.apache.org/tomahawk/extDataTable.html

    A toi de faire quelques essais

Discussions similaires

  1. [Tomahawk] Datatable + Filtre
    Par nico.louis dans le forum JSF
    Réponses: 0
    Dernier message: 10/04/2012, 22h29
  2. Tomahawk datatable et le tri
    Par jeune_developpeur_ma dans le forum JSF
    Réponses: 4
    Dernier message: 20/11/2008, 16h23
  3. [Tomahawk] Datatable et taille de colonne
    Par infonini dans le forum JSF
    Réponses: 6
    Dernier message: 14/09/2007, 09h19
  4. [Tomahawk] Datatable et scrollbar
    Par infonini dans le forum JSF
    Réponses: 1
    Dernier message: 12/09/2007, 10h00
  5. [Tomahawk] [dataTable] Master detail
    Par infonini dans le forum JSF
    Réponses: 3
    Dernier message: 06/09/2007, 11h42

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