我正在使用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>
有什么想法吗?谢谢!
答案 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 {