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>>

