Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
864 views
in Technique[技术] by (71.8m points)

escaping - How to escape '$' and '#' in Facelets/EL?

I'm using Java Facelets and jQuery, however the expression

$('...')

in jQuery conflicts with EL expression, how do I escape the jQuery's one?

I'd like to escape a large chunk of Javascript, too.

ANSWERED

To convert the existing JSP to Facelets xhtml, it's convenient to just wrap the existing javascript by <![CDATA[ ... ]]>. However, the output scripts for <script> are wrapped by <!-- --> comment, which conflicts with CDATA section:

<script><![CDATA[ scripts... ]]></script>

=> <script><!-- <![CDATA[ scripts... ]]> --></script>

To resolve this problem, you should also comment out the CDATA:

<script>/* <![CDATA[ */ scripts... /* ]]> */</script>

=> <script><!-- /* <![CDATA[ */ scripts... /* ]]> */--></script>

See also When is a CDATA section necessary within a script tag?.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

Should anyone need to, the Expression Language Specification Version 2.2 Maintenance Release describes how to escape EL expressions:

To generate literal values that include the character sequence "${" or "#{", the developer can choose to use a composite expression as shown here:

${'${'}exprA}
#{'#{'}exprB}

The resulting values would then be the strings ${exprA} and #{exprB}.

Alternatively, the escape characters $ and # can be used to escape what would otherwise be treated as an eval-expression. Given the literal-expressions:

${exprA}
#{exprB}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...