You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@myfaces.apache.org by simon <si...@chello.at> on 2008/01/07 23:05:27 UTC
Re: howto put inline javascript rendered by myfaces&tomahawk into
CDATA-section
On Mon, 2008-01-07 at 12:10 +0100, David Delbecq wrote:
> En l'instant précis du 07/01/08 11:58, R. Müller s'exprimait en ces termes:
> > hallo group,
> >
> > i'm working with myfaces/tomahawk 1.1.5 & facelets 1.1.3 with tomcat
> > 5.0.28 and mostly firefox-browsers (2.0.x) and trying to serve
> > xhtml-compliant pages. i know that myfaces renders 'only' html 4.01.
> > i'm forcing contentType 'text/xml' or 'application/xhtml+xml' by
> > adding the contentType-attribute to the 'f:view'-tag :
> >
> > <f:view contentType="application/xhtml+xml">
> >
> > most stuff works well. but sometimes firefox gets stuck on not
> > well-formed parts of the page, mostly because the rendered
> > javascript-code from varoius components is not embedded into a
> > CDATA-section - just a plain script-tag :
> >
> > <script type="text/javascript">
> >
> > so firefox checks this content as well and gets stuck. i.e. :
> >
> >
> > if((typeof target!='undefined') && target != null)
> > -------------------------------------------------^
> >
> > from
> > function oamSubmitForm(formName, linkId, target, params)
> >
> >
> >
> > is there any control on howto render javascript ?
> Yes, for tomahawk parts at least. Most tomahawk component makes call to
> AddRessource, using methods like 'insertScript(....)', you could
> overrride those methods and recompile your tomahawk. As for myfaces,
> most javascript rendering routines are in a few helper classes (you'll
> have to dig your self). Same rule applie: change the code, recompile.
> > is there an easy way to put these parts into CDATA-sections to get
> > well-formed xml-pages ?
> Your could write a filter that convert
> <script (.*)>(.*)</script>
> to
> <script $1><[CDATA[$2]]></script>
>
> Or, as mentionned, patch the myfaces/tomhawk code?
In HTML, script tags are special, and the content within them is
effectively automatically escaped. A lot of the myfaces/tomahawk
components were written assuming this.
It does appear that xhtml treats script tags just like any other tag,
with no special rules, so CDATA really is necessary:
http://www.w3.org/TR/xhtml1/#h-4.8
Patches to fix this would be gratefully received.
Regards,
Simon
Re: howto put inline javascript rendered by myfaces&tomahawk into
CDATA-section
Posted by David Delbecq <de...@oma.be>.
En l'instant précis du 07/01/08 23:05, simon s'exprimait en ces termes:
>> Your could write a filter that convert
>> <script (.*)>(.*)</script>
>> to
>> <script $1><[CDATA[$2]]></script>
>>
>> Or, as mentionned, patch the myfaces/tomhawk code?
>>
>
> In HTML, script tags are special, and the content within them is
> effectively automatically escaped. A lot of the myfaces/tomahawk
> components were written assuming this.
>
> It does appear that xhtml treats script tags just like any other tag,
> with no special rules, so CDATA really is necessary:
> http://www.w3.org/TR/xhtml1/#h-4.8
>
> Patches to fix this would be gratefully received.
>
> Regards,
> Simon
>
Could be, but JSF specs do not mention xhtml, it only mention HTML4.01
if i remember well. And since HTML 4.01 is not xml, it has no idea what
<![CDATA[ means. Only solution could be to have following kind of thing
generated. However, am not sure XHTML allow it :/ (splitting script in 2
parts)
<script>
// <![CDATA[
....
// ]]!>
--
http://www.devlog.be (a belgian developer's logs)