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