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)