2 votes

Problème d'arbre Richfaces - ne peut pas être converti en javax.swing.tree.TreeNode

Je suis en train d'utiliser Richfaces 3, Facelets (une version antérieure à JSF 2) et Tomcat. Je travaille sur l'ajout d'un arbre Richfaces à ma page, mais j'obtiens cette erreur :

org.richfaces.model.TreeNodeImpl ne peut pas être casté en javax.swing.tree.TreeNode

Voici le code que j'utilise pour construire la liste des nœuds :

 int i = 0;
 TreeNodeImpl rootNode = new TreeNodeImpl();
 for( Recommendation recommendation : m_recommendationsBean.getRecommendations() )
 {
    final TreeNodeImpl childNode = new TreeNodeImpl();
    childNode.setData( recommendation.getEventDescription() );
    rootNode.addChild( i, childNode );
    i++;
 }
 m_treeNodes.add( rootNode );

Et ensuite :

   @NotNull
   public List> getTreeNodes ()
   {
      return m_treeNodes;
   }

Et ma page contient juste cela :

      #{recommendation}

Des idées ? Merci !

3voto

BalusC Points 498232

Vérifiez vos imports. L'interface org.richfaces.model.TreeNode de RichFaces doit être utilisée dans la déclaration de propriété. Vous avez probablement choisi la première option de l'IDE pour importer le TreeNode Swing au lieu de celui de RichFaces lors de la déclaration du TreeNode.

Remplacez

import javax.swing.tree.TreeNode;

par

import org.richfaces.model.TreeNode;

3voto

Christophe Roussy Points 2347

Pour les autres lecteurs :

Le javax.swing.tree.TreeNode est utilisé dans la vitrine Richfaces ici : http://showcase.richfaces.org/richfaces/component-sample.jsf?demo=tree&skin=blueSky

Il semble que les deux soient possibles. La documentation indique :

Le modèle de données doit être soit une interface org.richfaces.model.TreeNode, une interface org.richfaces.model.TreeDataModel, ou une interface javax.swing.tree.TreeNode.

package org.richfaces.demo.tree.model;

import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;

import javax.swing.tree.TreeNode;

import com.google.common.collect.Iterators;

public class Country extends NamedNode implements TreeNode {

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X