Wenn man in einer Facelets XHTML Seite im Header Bereich JavaScript mit den uncodierten Sonderzeichen & oder < verwendet, resultiert dies in einer der folgenden Fehlermeldung:
com.sun.facelets.FaceletException: Error Parsing forum.xhtml: Error Traced[line: 10] The content of elements must consist of well-formed character data or markup.
com.sun.facelets.FaceletException: Error Parsing forum.xhtml: Error Traced[line: 10] The reference to entity "forum" must end with the ';' delimiter.
com.sun.facelets.FaceletException: Error Parsing forum.xhtml: Error Traced[line: 10] The entity name must immediately follow the '&' in the entity reference.
Eine Lösung wäre natürlich die Sonderzeichen mit den XHTML Entities & und < zu encodieren. Soll aber der Code bei Vergleichen oder mathematischen Funktionen weiterhin leserlich bleiben, bietet es sich an den ganzen JavaScript Block in eine CDATA Sektion einzubinden.
<script type="text/javascript">
//<![CDATA[
...
url = 'forum?id=111&topic=222';
if ((forum > 1) && (forum < 10))
...
//]]>
</script>
[1] JSF 1.2
[2] Mojarra 1.2_14
Johannes Hammoud JavaScript 23.04.2012