There is no such thing as a nested facet in JSF at all. A facet is a
map of string->UIComponent in a component. Therefore, it is only 1
level deep. When you put a panelGroup in a facet and put facets in
that panelGroup you are simply creating this structure:

Tree2 -> [Facet] -> PanelGroup -> [Facet] -> SomeComponent

The second facet is a facet of the panel group and is totally
unrelated to the tree2 component. PanelGroups never render their
facets with the default renderer, so the "SomeComponent" will never be
rendered.

If you want to have different behavior for expanded or collapsed
nodes, you will have to (1) use EL in your node facet or (2) create
separate nodes for expanded/collapsed.

From your example, I recommend (1)

<t:tree2 id="clientTree" value="#{csc_CSCTreeBean.treeData}"
var="node" varNodeToggler="t">
<f:facet name="person">
 <h:panelGroup>
   <t:graphicImage value="#{t.nodeExpanded ?
     'images/yellow-folder-open.png' :
     'images/yellow-folder-closed.png'}"
     border="0"/>
   <h:outputText value="#{node.description}" styleClass="nodeFolder"/>
 </h:panelGroup>
</f:facet>
...



On 9/19/06, davy.mailing <[EMAIL PROTECTED]> wrote:


Thank you very much

I am still a little puzzled

The code that i copied is from tomahawk sample code. And it really works .

Maybe you mean we can't use nested facets in facelet?

Thanks again for your help


 ________________________________

davy.mailing
2006-09-20
 ________________________________

发件人: Andrew Robinson
发送时间: 2006-09-19 23:51:45

收件人: MyFaces Discussion
抄送:
主题: Re: Questions about tree2 and Facelet


Why do you have nested facets? There should only be
one facet per
"node" type. Nested is not supported. Have a look at
the example apps
to see how to create the facets. The use of
"expand" and "collapse"
facets is not supported, especially when you
have added these facets
to a panel group. The panel group component does
not render facets

On 9/19/06, davy.mailing  <[EMAIL PROTECTED] > wrote:
>
>
> Thanks for Andrew Robinson
>
> I wrote tree2.xhtml like this
>
>
>  <html xmlns="http://www.w3.org/1999/xhtml";
>       xmlns:ui="http://java.sun.com/jsf/facelets";
>       xmlns:h="http://java.sun.com/jsf/html";
>       xmlns:f="http://java.sun.com/jsf/core";
>       xmlns:t="http://myfaces.apache.org/tomahawk"; >
>  <h:inputText value="test jsf"/ >
>  <f:view >
>  <h:form id="tree" >
>  <t:tree2 id="clientTree"
> value="#{csc_CSCTreeBean.treeData}" var="node"
> varNodeToggler="t" >
>          <f:facet name="person" >
>              <h:panelGroup >
>                  <f:facet name="expand" >
>                      <t:graphicImage
value="images/yellow-folder-open.png"
> rendered="#{t.nodeExpanded}" border="0"/ >
>                  </f:facet >
>                  <f:facet name="collapse" >
>                      <t:graphicImage
value="images/yellow-folder-closed.png"
> rendered="#{!t.nodeExpanded}" border="0"/ >
>                  </f:facet >
>                  <h:outputText value="#{node.description}"
> styleClass="nodeFolder"/ >
>              </h:panelGroup >
>          </f:facet >
>          <f:facet name="foo-folder" >
>              <h:panelGroup >
>                  <f:facet name="expand" >
>                      <t:graphicImage
value="images/yellow-folder-open.png"
> rendered="#{t.nodeExpanded}" border="0"/ >
>                  </f:facet >
>                  <f:facet name="collapse" >
>                      <t:graphicImage
value="images/yellow-folder-closed.png"
> rendered="#{!t.nodeExpanded}" border="0"/ >
>                  </f:facet >
>                  <h:outputText value="#{node.description}"
> styleClass="nodeFolder"/ >
>                  <h:outputText value=" (#{node.childCount})"
> styleClass="childCount" rendered="#{!empty
node.children}"/ >
>              </h:panelGroup >
>          </f:facet >
>          <f:facet name="bar-folder" >
>              <h:panelGroup >
>                  <f:facet name="expand" >
>                      <t:graphicImage
value="images/blue-folder-open.gif"
> rendered="#{t.nodeExpanded}" border="0"/ >
>                  </f:facet >
>                  <f:facet name="collapse" >
>                      <t:graphicImage
value="images/blue-folder-closed.png"
> rendered="#{!t.nodeExpanded}" border="0"/ >
>                  </f:facet >
>                  <h:outputText value="#{node.description}"
> styleClass="nodeFolder"/ >
>                  <h:outputText value=" (#{node.childCount})"
> styleClass="childCount" rendered="#{!empty
node.children}"/ >
>              </h:panelGroup >
>          </f:facet >
>          <f:facet name="document" >
>              <h:panelGroup >
>                  <h:commandLink immediate="true"
styleClass="#{t.nodeSelected
> ? 'documentSelected':'document'}"
actionListener="#{t.setNodeSelected}" >
>                      <t:graphicImage
value="images/document.png" border="0"/ >
>                      <h:outputText value="#{node.description}"/ >
>                      <f:param name="docNum"
value="#{node.identifier}"/ >
>                  </h:commandLink >
>              </h:panelGroup >
>          </f:facet >
>      </t:tree2 >
>
>      </h:form >
>  </f:view >
>  </html >
>
>
> and in java code TreeBean  I wrote like this
>
>     public TreeNode getTreeData()
>     {
>         TreeNode treeData = new
TreeNodeBase("foo-folder", "Inbox", false);
>         TreeNodeBase personNode = new
TreeNodeBase("person", "Frank Foo",
> false);
>         personNode.getChildren().add(new
TreeNodeBase("foo-folder",
> "Requires Foo", false));
>         TreeNodeBase folderNode = new
TreeNodeBase("foo-folder", "Requires
> Foo Reviewer", false);
>         folderNode.getChildren().add(new
TreeNodeBase("document", "X050001",
> true));
>         folderNode.getChildren().add(new
TreeNodeBase("document", "X050002",
> true));
>         folderNode.getChildren().add(new
TreeNodeBase("document", "X050003",
> true));
>         personNode.getChildren().add(folderNode);
>         personNode.getChildren().add(new
TreeNodeBase("foo-folder",
> "Requires Foo Recommendation", false));
>         folderNode = new TreeNodeBase("foo-folder",
"Requires Foo Approval",
> false);
>         folderNode.getChildren().add(new
TreeNodeBase("document", "J050001",
> true));
>         folderNode.getChildren().add(new
TreeNodeBase("document", "J050002",
> true));
>         folderNode.getChildren().add(new
TreeNodeBase("document", "J050003",
> true));
>         folderNode.getChildren().add(new
TreeNodeBase("document", "E050011",
> true));
>         folderNode.getChildren().add(new
TreeNodeBase("document", "R050002",
> true));
>         folderNode.getChildren().add(new
TreeNodeBase("document", "C050003",
> true));
>         personNode.getChildren().add(folderNode);
>         folderNode = new TreeNodeBase("bar-folder",
"Requires Bar
> Processing", false);
>         folderNode.getChildren().add(new
TreeNodeBase("document", "X050003",
> true));
>         folderNode.getChildren().add(new
TreeNodeBase("document", "X050011",
> true));
>         folderNode.getChildren().add(new
TreeNodeBase("document", "F050002",
> true));
>         folderNode.getChildren().add(new
TreeNodeBase("document", "G050003",
> true));
>         personNode.getChildren().add(folderNode);
>         folderNode = new TreeNodeBase("bar-folder",
"Requires Bar Approval",
> false);
>         folderNode.getChildren().add(new
TreeNodeBase("document", "J050006",
> true));
>         folderNode.getChildren().add(new
TreeNodeBase("document", "J050007",
> true));
>         personNode.getChildren().add(folderNode);
>         treeData.getChildren().add(personNode);
>         personNode = new TreeNodeBase("person",
"Betty Bar", false);
>         personNode.getChildren().add(new
TreeNodeBase("foo-folder",
> "Requires Foo", false));
>         folderNode = new TreeNodeBase("foo-folder",
"Requires Foo Reviewer",
> false);
>         folderNode.getChildren().add(new
TreeNodeBase("document", "X012000",
> true));
>         folderNode.getChildren().add(new
TreeNodeBase("document", "X013000",
> true));
>         folderNode.getChildren().add(new
TreeNodeBase("document", "X014000",
> true));
>         personNode.getChildren().add(folderNode);
>         folderNode = new TreeNodeBase("foo-folder",
"Requires Foo
> Recommendation", false);
>         folderNode.getChildren().add(new
TreeNodeBase("document", "J010026",
> true));
>         folderNode.getChildren().add(new
TreeNodeBase("document", "J020002",
> true));
>         folderNode.getChildren().add(new
TreeNodeBase("document", "J030103",
> true));
>         folderNode.getChildren().add(new
TreeNodeBase("document", "E030214",
> true));
>         folderNode.getChildren().add(new
TreeNodeBase("document", "R020444",
> true));
>         folderNode.getChildren().add(new
TreeNodeBase("document", "C010000",
> true));
>         personNode.getChildren().add(folderNode);
>         personNode.getChildren().add(new
TreeNodeBase("foo-folder",
> "Requires Foo Approval", false));
>         folderNode = new TreeNodeBase("bar-folder",
"Requires Bar
> Processing", false);
>         folderNode.getChildren().add(new
TreeNodeBase("document", "T052003",
> true));
>         folderNode.getChildren().add(new
TreeNodeBase("document", "T020011",
> true));
>         personNode.getChildren().add(folderNode);
>         folderNode = new TreeNodeBase("bar-folder",
"Requires Bar Approval",
> false);
>         folderNode.getChildren().add(new
TreeNodeBase("document", "J010002",
> true));
>         folderNode.getChildren().add(new
TreeNodeBase("document", "J030047",
> true));
>         folderNode.getChildren().add(new
TreeNodeBase("document", "F030112",
> true));
>         personNode.getChildren().add(folderNode);
>         treeData.getChildren().add(personNode);
>         return treeData;
>     }
>
> It does not work . I don't know why
>
>  ________________________________
>
> davy.mailing
> 2006-09-19
>  ________________________________
>
> 发件人: Andrew Robinson
> 发送时间: 2006-09-19 10:43:00
> 收件人: MyFaces Discussion
> 抄送:
> 主题: Re: Questions about tree2 and Facelet
>
>
>
> There is nothing special to do when using tree2 with
> facelets.
>
> On 9/18/06, davy.mailing   <[EMAIL PROTECTED]  > wrote:
>  >
>  >
>  > Dear all
>  >
>  > I am using tree2 and facelet now
>  >
>  > Who can tell me how to use tree2 in facelet and
> what's more  a example will
>  > be better
>  >
>  > thanks in advance
>  >
>  >  ________________________________
>  >
>  > davy.mailing
>  > 2006-09-18
>

Reply via email to