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 :

[JSF] comment recuperer la selection dans un arbre ?


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2002
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 39
    Par défaut [JSF] comment recuperer la selection dans un arbre ?
    Bonjour,

    J'ai un arbre dans ma page 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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    <html>
    <%@ page import="org.apache.myfaces.custom.tree.model.DefaultTreeModel,
                     com.perso.directory.beans.DatabaseBean"%>
     
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="core" %>
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="html" %>
    <%@ taglib uri="http://myfaces.apache.org/extensions" prefix="ext"%>
     
    <core:view>
    <head>
    	<title>Vision des tables</title>
    </head>
     
    <body>
    <%
       if (pageContext.getAttribute("treeModel", PageContext.SESSION_SCOPE) == null) {
    		pageContext.setAttribute("treeModel", new DefaultTreeModel(DatabaseBean.initTree()), PageContext.SESSION_SCOPE);
       }
    %>
     
    	<table border="1">
    		<tr>
    			<th>
    				Module
    			</th>
    			<th>
    				Catégorie
    			</th>
    		</tr>
    		<tr>
    			<td>
    				<ext:tree value="#{treeModel}" binding="#{database.tree}">
    				</ext:tree>
    			</td>
     
    			<td>
    			</td>
    		</tr>			
    	</table>
    </body>
    </core:view>
    Cette arbre est initialisé par une méthode statique contenue dans mon bean. J'ai egalement implémenté un listener dans ce bean pour recuperer le nom de l'element selectionné (voir methode retrieveElement). Mais le probleme, c'est que je n'arrive pas à faire un binding entre mon arbre avec mon instance de HtmlTree dans mon bean...
    Auriez vous une piste à me donner ?

    Voici le code de mon bean :
    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    package com.perso.directory.beans;
     
     
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Iterator;
     
    import javax.faces.event.ActionEvent;
    import javax.faces.model.SelectItem;
     
    import org.apache.myfaces.custom.tree.DefaultMutableTreeNode;
    import org.apache.myfaces.custom.tree.HtmlTree;
    import org.apache.myfaces.custom.tree.event.TreeSelectionEvent;
    import org.apache.myfaces.custom.tree.event.TreeSelectionListener;
     
    import com.perso.directory.DAO.DatabaseHome;
     
    public class DatabaseBean {
    	private ArrayList modules;
    	HtmlTree tree;
     
    	/**
             * get the list of modules
             * 
             * @return the list of modules
             */
    	public ArrayList getModules() {
    	...
    	}
     
    	/**
             * return the list of items corresponding to the modules
             * 
             * @return the list of modules
             */
    	public Collection getModulesList() {
    	...
    	}
     
    	/**
             * initialize the structure of the database tree in the jsp page
             * 
             * @return the root node
             */
    	public static DefaultMutableTreeNode initTree() {
    		ArrayList modulesTemp = DatabaseHome.getModules();
     
    		Iterator iter = modulesTemp.iterator();
     
    		DefaultMutableTreeNode root = new DefaultMutableTreeNode("Database");
     
    		while (iter.hasNext()) {
    			ModuleBean item = (ModuleBean)iter.next();
    			DefaultMutableTreeNode node = new DefaultMutableTreeNode(item.getCode());
    			root.insert(node);
    		}			
     
    		return root;
    	}
     
    	/**
             * get the database tree of the jsp page
             * 
             * @return the HtmlTree
             */
    	public HtmlTree getTree() {
    		return tree;
    	}
     
    	/**
             * set the database tree of the jsp page
             *
             * @param newTree
             */
     
    	public void setTree(HtmlTree newTree) {
    		tree = newTree;
    	}
     
    	/**
             * get element in the tree
             * 
             */
    	public void retrieveElement(ActionEvent actionEvent) {
    		tree.addTreeSelectionListener( new TreeSelectionListener() {
    				public void valueChanged(TreeSelectionEvent e) {
    					DefaultMutableTreeNode node = (DefaultMutableTreeNode)tree.getSelectionPath().getLastPathComponent();
     
    					if (node == null) return;
     
    					//Object nodeInfo = node.getUserObject();
    					System.out.println(node.toString());
    					///...
    					/* React to the node selection. */
    					//...
    				}
    		});
    	}
    }
    Merci d'avance
    @+
    Jorus

  2. #2
    Membre averti
    Inscrit en
    Mai 2002
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 39
    Par défaut
    Ou si vous avez d'autres solutions pour recuperer le node selectionné dans un tree ou un tree2, je suis preneur !

    Merci
    Jorus

  3. #3
    Membre averti
    Inscrit en
    Mai 2002
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 39
    Par défaut
    Bon j'ai trouvé. Je mets la solution pour ceux que ca interresse :

    le .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
    32
    33
    34
    <html>
     
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="core" %>
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="html" %>
    <%@ taglib uri="http://myfaces.apache.org/extensions" prefix="ext"%>
     
    <core:view>
    <head>
    	<title>Vision des tables</title>
    </head>
     
    <body>
    	<table border="1">
    		<tr>
    			<th>
    				Module
    			</th>
    			<th>
    				Catégorie
    			</th>
    		</tr>
    		<tr>
    			<td>
    				<ext:tree expandRoot="false" value="#{database.treeModel}">
    				<ext:treeSelectionListener type="com.perso.directory.listener.TreeListener"/> 
    				</ext:tree>
    			</td>
     
    			<td>
    			</td>
    		</tr>			
    	</table>
    </body>
    </core:view>
    le listener :

    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
    package com.perso.directory.listener;
     
    import org.apache.myfaces.custom.tree.DefaultMutableTreeNode;
    import org.apache.myfaces.custom.tree.event.TreeSelectionEvent;
    import org.apache.myfaces.custom.tree.event.TreeSelectionListener;
     
     
    public class TreeListener implements TreeSelectionListener {
     
    	public void valueChanged(TreeSelectionEvent event) {
    		// TODO Auto-generated method stub
    		DefaultMutableTreeNode node = (DefaultMutableTreeNode) event.getNewSelectionPath().getLastPathComponent();
     
    		if (node == null)
    		{
    			System.err.println("NO NODE");
    		}
    		else
    		{
    			System.out.println(node);
    		}
    	}
    }
    Voilà, comme d'hab, c'etait tout bête...

    @+
    Jorus

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/07/2006, 16h23
  2. Réponses: 2
    Dernier message: 19/01/2006, 21h59
  3. Comment placer un selected dans un boucle
    Par PrinceMaster77 dans le forum ASP
    Réponses: 4
    Dernier message: 22/06/2004, 16h55
  4. Réponses: 2
    Dernier message: 19/01/2004, 12h19
  5. comment recuperer une variable dans flash
    Par krépuscul dans le forum Flash
    Réponses: 30
    Dernier message: 16/10/2003, 09h40

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