You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by Werner Punz <we...@gmail.com> on 2009/04/21 20:22:44 UTC

Re: [Fwd: Re: jsdoc spec enhancement request from MyFaces 2.0 development team]

Btw. I agree fully with the body issue
in the spec.
There are usecases where you need to replace the tag as well for instance


<body>...</body> can become <body class="...">...</body>

same goes for embedded onload handlers etc...

Sure there are workarounds but, why not fix it on the spec side as long 
as it is possible.


Werner



Ganesh schrieb:
> Hi,
> 
> Here's the response from Roger on  my request for an enhancement of the 
> JSF 2.0 spec.
> 
> Best Regards,
> Ganesh
> 
> -------- Original-Nachricht --------
> Betreff:     Re: jsdoc spec enhancement request from MyFaces 2.0 
> development team
> Datum:     Tue, 21 Apr 2009 09:02:27 -0400
> Von:     Roger Kitain <Ro...@Sun.COM>
> An:     Ganesh <ga...@j4fry.org>
> CC:     jsr-314-comments@jcp.org
> Referenzen:     <gs...@ger.gmane.org> 
> <49...@J4Fry.org> <gs...@ger.gmane.org> 
> <gs...@ger.gmane.org> <49...@J4Fry.org> 
> <fa...@mail.gmail.com> 
> <gs...@ger.gmane.org> 
> <71...@mail.gmail.com> 
> <49...@J4Fry.org>
> 
> 
> 
> Hey Ganesh -
> 
> Thanks so much for the excellent comments.  I agree with the assessment 
> of the javax.faces.ViewState problem, as well
> as I know there is some history.  I believe both Mojarra and MyFaces 
> have a workaround for the rendering of this field.
> I am ok with relaxing the spec language to focus on the "name" attribute 
> of the javax.faces.ViewState field as you suggest
> below.  At this stage that may me the best solution.  I am happy to see 
> another implementation of the JSF 2.0 Ajax
> specification in development.
> 
> Regards,  Roger.
> 
> Ganesh wrote:
>> Hi,
>>
>> When developing the AJAX part of MyFaces 2.0 we encountered 2 
>> locations within the jsdoc part of the spec we'd propose for enhancement.
>>
>> The first is about the hidden inputs for view state: The jsdocs for 
>> jsf.ajax.response imply that each hidden input receives the id 
>> "javax.faces.ViewState" which would result in multiple hidden inputs 
>> with this id in a multi form document. This is how Mojarra is 
>> currently working things out, but other implementations should get a 
>> chance to use a w3c conformant approach - the hidden inputs don't need 
>> ids at all, but only name=javax.faces.ViewState. A comment on this was 
>> already posted by Werner Punz.
>>
>> The second is about replacing the body section of a document if the 
>> server sends the id javax.faces.ViewRoot: The jsdocs for 
>> jsf.ajax.response say that the impl should >>extract the contents of 
>> the <body> element from the <update> element's CDATA content and 
>> replace the document's <body> section with this contents<<. According 
>> to this the attributes of the body element wouldn't be replaced with 
>> the new attributes, which probably isn't the intended behaviour. 
>> Preserving the attributes can either be achieved by copying them or by 
>> using contextualRagen/adjacentHTML instead of innerHTML.
>>
>> Here is a proposal for changing the jsdocs for jsf.ajax.response to 
>> enable both enhancements mentioned above - please correct the jsdoc 
>> for <static> jsf.ajax.response(request, context)
>> like this:
>>
>> If an update element is found in the response with the identifier 
>> javax.faces.ViewRoot:
>>
>> <update id="javax.faces.ViewRoot">
>>    <![CDATA[...]]>
>> </update>
>>
>> Update the entire DOM as follows:
>>
>>     * Extract the CDATA content and trim the <html> and </html> from 
>> the CDATA content if it is present.
>>
>> <<<<<<< (remove the following lines)
>>
>>     * If the CDATA content contains a <head> element, and the document 
>> has a <head> section, extract the contents of the <head> element from 
>> the <update> element's CDATA content and replace the document's <head> 
>> section with this contents.
>>     * If the CDATA content contains a <body> element, and the document 
>> has a <body> section, extract the contents of the <body> element from 
>> the <update> element's CDATA content and replace the document's <body> 
>> section with this contents.
>>
>> ======= (add the following lines)
>>
>>     * If the CDATA content contains a <head> element, and the document 
>> has a <head> section, replace the document's <head> section with the 
>> <head> section contained within the CDATA content.
>>     * If the CDATA content contains a <body> element, and the document 
>> has a <body> section, replace the document's <body> section with the 
>> <body> section contained within the CDATA content.
>>
>> >>>>>>>
>>
>>     * If the CDATA content does not contain a <body> element, replace 
>> the document's <body> section with the CDATA contents.
>>
>> If an update element is found in the response with the identifier
>> javax.faces.ViewState:
>>
>> <update id="javax.faces.ViewState">
>>   <![CDATA[...]]>
>> </update>
>>
>> Include this state in the document as follows:
>>
>>    * Extract this <update> element's CDATA contents from the response.
>>
>> <<<<<< (remove the following lines)
>>
>>    * If the document contains an element with the identifier
>>      javax.faces.ViewState replace its contents with the CDATA
>>      contents.
>>    * For each <form> element in the document:
>>          o If the <form> element contains an <input> element with
>>            the identifier javax.faces.ViewState, replace the
>>            <input> element contents with the <update> element's
>>            CDATA contents.
>>          o If the <form> element does not contain an element with the
>>            identifier javax.faces.ViewState, create an <input>
>>            element of the type hidden, with the identifier
>>            javax.faces.ViewState, set its contents to the <update>
>>            element's CDATA contents, and add the <input> element as
>>            a child to the <form> element.
>>
>> ======= (add the following lines)
>>
>>    * Set the value of all elements within the document with the name
>>      javax.faces.ViewState to the CDATA contents
>>    * Perform the following optionally, implementations my omit this to 
>> enhance performance, as it enforces a search within the DOM tree. For 
>> each <form> element in the document:
>>          o If the <form> element does not contain an element with the
>>            name javax.faces.ViewState, create an <input> element of
>>            the type hidden, with the name javax.faces.ViewState,
>>            set its value to the <update> element's CDATA contents,
>>            and add the <input> element as a child to the <form>
>>            element.
>>
>>>>>>>>>
>>
>> Best Regards,
>> Ganesh Jung
>>
>>
>>
> 
>