[ 
https://issues.apache.org/jira/browse/MYFACES-2654?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12856515#action_12856515
 ] 

Leonardo Uribe commented on MYFACES-2654:
-----------------------------------------

I think with MYFACES-2654-2.patch we comply with the spec. Obviously if someone 
uses a custom VDL, everything changes, but in this case the VDL is responsible 
to "buffer" the content outside f:view. I think the patch proposed on 
MYFACES-2654-3.patch does not work, because the is a missing detail that you 
can see on the example proposed. This is an extract of the change required on 
JspViewDeclarationLanguage.buildView():

-        // store the wrapped response in the request, so it is thread-safe
-        setAfterViewTagResponseWrapper(externalContext, wrappedResponse);
+        //Skip this step if we are rendering an ajax request, because no 
content outside
+        //f:view tag should be output.
+        if (!context.getPartialViewContext().isPartialRequest())
+        {
+            // store the wrapped response in the request, so it is thread-safe
+            setAfterViewTagResponseWrapper(externalContext, wrappedResponse);
+        }

Note that jsp requires encapsulate everything inside f:view, but in facelets 
"everything is a UIComponent", so all markup by default is inside a UIViewRoot 
instance, and the statement does not have sense in this case. To expose this 
implementation detail to other vdl implementations it is used a facesContext 
attribute taken from the first patch, so if someone else wants to create a 
custom VDL, he/she can use that attribute 
(org.apache.myfaces.RESPONSE_SWITCH_ENABLED).

I believe (according to the spec) that the position of the EG is new features 
on the spec are for facelets only. In fact, mojarra does not do what the spec 
says because the case proposed does not work.

Use a PhaseListener is a good idea but unfortunately it does not solve the 
problem fully.

> Trinidad ajax-branch does not work with MyFaces2
> ------------------------------------------------
>
>                 Key: MYFACES-2654
>                 URL: https://issues.apache.org/jira/browse/MYFACES-2654
>             Project: MyFaces Core
>          Issue Type: Bug
>    Affects Versions: 2.0.0-beta-3
>         Environment: Trinidad ajax branch, URL: 
> https://svn.apache.org/repos/asf/myfaces/trinidad/branches/jsf2_ajax.3/
> MyFaces TRUNK
>            Reporter: Matthias Weßendorf
>         Attachments: MYFACES-2654-2.patch, MYFACES-2654-3.patch, 
> MYFACES-2654.patch
>
>
> run the demo (like via Jetty):
> Go to "http://localhost:8080/trinidad-demo/faces/demos/pprDemos.jspx";
> on any "ajax" action/click, I get these two alert() boxes:
> * "TypeError: this._ajaxOldDomElements is null"
> * "malformedXML--"
> Same stuff works with Mojarra 2.0.2

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
https://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira


Reply via email to