2011-01-09 23 views
3

嗨 我已经写了RichFaces的树标记一个简单的例子,但它只是扩展根节点(但不垮他们回) 的XHTML代码:为什么richfaces树示例不起作用?

<rich:panel id="unitTest" width="240" height="400"> 
     <h:form> 
     <rich:tree> 
     <rich:recursiveTreeNodesAdaptor roots="#{tree.nodes}" var="item" nodes="#{item.nodes}" > 
      <rich:treeNode> 
       <h:outputText value="#{item}"/> 
      </rich:treeNode> 
     </rich:recursiveTreeNodesAdaptor> 
     </rich:tree> 
     </h:form> 
    </rich:panel> 

的java bean代码:

import java.util.*; 

public class UnitTreeNode 
{ 
    String name; 
    List<UnitTreeNode> children; 

    public UnitTreeNode() 
    { 
     this.name=""; 
    } 
    public UnitTreeNode(String name) 
    { 
     this.name=name; 
    } 
    public List<UnitTreeNode> getNodes() 
    { 
     if(children==null) 
     { 
     children=new ArrayList<UnitTreeNode>(); 
     for(int i=0;i<3;i++) 
      children.add(new UnitTreeNode(name+i)); 
     } 
     return children; 
    } 
    public String toString() 
    { 
     return name; 
    } 
} 

配置:

<managed-bean> 
     <managed-bean-name>tree</managed-bean-name> 
     <managed-bean-class>UnitTreeNode</managed-bean-class> 
     <managed-bean-scope>session</managed-bean-scope> 
    </managed-bean> 

我使用的MyFaces 1.2.8和RichFaces的3.3.2.SR1,我不明白为什么它不起作用。

回答

0

问题是默认树switchType是ajax和你的ajax请求没有得到正确提交到服务器由于周围的标签(似乎是一个丰富的面部实现的bug,它可能会解决与更高版本)。

所以这里是解决

  1. 使用<rich:tree switchType="server">
  2. 或只是删除<h:form>标签

希望这有助于

0

我有同样的问题上面临3.3.3,在我的web.xml中设置facelets.BUILD_BEFORE_RESTORE为false。

<context-param> 
    <param-name>facelets.BUILD_BEFORE_RESTORE</param-name> 
    <param-value>false</param-value> 
</context-param>