This is the wrong mailing list for this question, it is not regarding
myfaces development. I am posting this reply on the users list, all
further replies should go there.

I don't think that you solution is a valid one. It is not valid to
locate a component in more than one location of one component tree. I
think this may be a "safer" solution, but still a hack:

First create a custom root component that does not render anything,
just make sure it is at the root, under the UIViewRoot (or you can
subclass UIViewRoot if you want). Then in that component, during the
phase methods (processDecodes, processValidators, etc.), check to see
if the request is an AJAX request.

Then using invokeOnComponent, find the target of your action. Move the
children into a temporary list if you want to avoid process its
children, invoke the lifecycle method on that component, then restore
the children.

Another safer method would be to use sub forms to limit the scope of the action.

-Andrew

On Tue, Dec 23, 2008 at 3:39 AM, gibiman <victor.bucu...@gmail.com> wrote:
>
> Hi ,
> I'm trying to develop custom AJAX components, and i'm facing some problems
> on the JSF technology architecture . Pay attention ;) :
>
> An action on the page launches an XMLHttpRequest to a certain URL ( .jsf
> suffix). My aim is to have the JSF engine process only a certain part of the
> JSF tree , that is the part which contains the children of the component
> that launched the request ( for example a tabPanel component generates an
> ajax request , and only that certain tabPanel needs to be processed by the
> JSF engine ) .
> My aproach on the problem was to build a listener which would :
>
> after RESTORE_VIEW(1)
>
> 1. Fetch the UIComponent which launched the request
> 2. Create a new UIViewRoot and set the new UIViewRoot to the facesContext
> 3. Add the UICompononet fetched at step 1 as child to the UIviewRoot
> 4. Invoke action specific behavior of the component -  is ok to ignore this
> part
>
>
> The thing is that new UIViewRoot will get populated - by that i mean all the
> previous children erased - on renderResponse phase with the JSP tags (
> naturally because the engine would return the corresponding viewId ) . If I
> were to set an invalid viewId , e.g. a page that would not exist, than it
> would return a 404 page not found response.
> What are your opinions on my approach , and what alternate suggestions do
> you have ?
> Victor
> --
> View this message in context: 
> http://www.nabble.com/Quite-advanced-JSF-problem-tp21142256p21142256.html
> Sent from the My Faces - Dev mailing list archive at Nabble.com.
>
>

Reply via email to