The expand control is inside the guts of the tree2 component.  In fact the 
constructor of the tree2 creates the expand control commandlink.  That means 
there is no way to access it through tags on your page.  You'd have to fiddle 
with it after the tree2 constructor has fired but before it is rendered.  
Luckily it is a public property (well it has a public getter) so you can  alter 
it's properties through code.  Not a really nice way to do it.  One way you 
could do it, though I haven't given it a go yet, is to write your own render 
kit and fiddle with it then according to params you set or a facet?  You could 
also just extend it and override the tree2 constructor and add an extra 
attribute to the tag.  Just depends on how you want to go.

I'm using a phase listener at the moment because I've already wasted three days 
(long ones too) trying to figure out the expand control.

Surrey.


-----Original Message-----
From: CONNER, BRENDAN (SBCSI) [mailto:[EMAIL PROTECTED]
Sent: Tue 26/07/2005 12:48 AM
To: MyFaces Discussion
Subject: RE: Tree2 expand Control problem when in a form
 
Hi Surrey,
 
Thanks for the insight.  Have you had any luck attaching an
actionListener to the expandControl's commandLink?  We're trying to get
an actionListener attached so we can do lazy fetches of the children on
an as-needed basis.  However, we've only been able to attach an
actionListener to the commandLink that we specify inside the tree (not
to the expandControl itself).
 
- Brendan

-----Original Message-----
From: Surrey Hughes [mailto:[EMAIL PROTECTED] 
Sent: Monday, July 25, 2005 4:20 AM
To: [email protected]
Subject: Tree2 expand Control problem when in a form




Hi,
I've found the x:tree2 tag creates an HtmlTree that contains a property
called expandControl.  The expand control is set as a new commandLink.
It is rendered using an image of a plus or a minus and expands or
collapses the node.  The commandLink component renders a bunch of
javascript or a url query string (depending on if you allow javascript
in web.xml) that uses either the form containing the link or it creates
a dummy form and submits that as part of its action.  Now the problem
with tree2 is that the expandControl commandLink has no parent as it is
created as a property of the HtmlTree.  That means during rending no
form is detected even if the tree2 is in a form.  As you could well
imagine, that means if you are relying on the form fields to be
submitted correctly when you expand or contract a server toggled tree
you are out of luck.

The solution:
Well I guess I'd change tree2 so it creates a commandLink and sets the
parent as the tree component.
But I didn't do that.  Instead I created a PhaseListener that listend to
the restore view phase where it recursively goes through the UIViewRoot
and for each HtmlTree I set the expandControl parent to be the tree it
is housed in.
This is an imperfect solution but at least I can get on with the rest of
my app.

Yeah, it sent me insane and kept me back at work for many long hours.

I hope this helps someone else outthere.  Also if anyone wants to fix
the tree2 component then feel free :)

Surrey. 




<<winmail.dat>>

Reply via email to