Richfaces树问题 - 无法转换为javax.swing.tree.TreeNode

时间:2011-08-08 18:52:38

标签: jsf tomcat richfaces

我正在使用Richfaces 3,Facelets(一个前JSF 2版本)和Tomcat。我正在为我的页面添加Richfaces树,但是得到了这个错误:

  

org.richfaces.model.TreeNodeImpl无法强制转换为javax.swing.tree.TreeNode

以下是我用来构建节点列表的代码:

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

然后:

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

我的页面就是这样:

<rich:tree value="#{DmsRecommendationsPage.treeNodes}" var="recommendation">
   <rich:treeNode>
      #{recommendation}
   </rich:treeNode>
</rich:tree>

有什么想法吗?谢谢!

2 个答案:

答案 0 :(得分:3)

检查您的进口商品。应该在属性声明中使用RichFaces自己的org.richfaces.model.TreeNode接口。在声明TreeNode时,您可能已选择IDE自动提示的第一个选项来导入Swing one而不是RichFaces。

替换

import javax.swing.tree.TreeNode;

通过

import org.richfaces.model.TreeNode;

答案 1 :(得分:3)

对于其他读者:

javax.swing.tree.TreeNode在Richfaces展示中使用: http://showcase.richfaces.org/richfaces/component-sample.jsf?demo=tree&skin=blueSky

似乎两者都有可能。 documentation州:

  

数据模型必须是org.richfaces.model.TreeNode   interface,org.richfaces.model.TreeDataModel接口,或者   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 {