我正在使用Java Facelets和jQuery,但表达式
$('...')
在jQuery与EL表达式冲突时,如何逃避jQuery的?
我也想逃避大量的Javascript。
ANSWERED
要将现有JSP转换为Facelets xhtml,只需用<![CDATA[ ... ]]>
包装现有的javascript即可。但是,<script>
的输出脚本包含在<!-- -->
注释中,与CDATA部分冲突:
<script><![CDATA[ scripts... ]]></script>
=> <script><!-- <![CDATA[ scripts... ]]> --></script>
要解决此问题,您还应注释掉CDATA:
<script>/* <![CDATA[ */ scripts... /* ]]> */</script>
=> <script><!-- /* <![CDATA[ */ scripts... /* ]]> */--></script>
答案 0 :(得分:11)
如果有人需要,Expression Language Specification Version 2.2 Maintenance Release描述了如何转义EL表达式:
生成文字值 包括字符序列
"${"
或"#{"
,开发者可以选择 使用复合表达式,如图所示 这里:${'${'}exprA} #{'#{'}exprB}
结果值将是 字符串
${exprA}
和#{exprB}
。或者,转义字符
\$
和\#
可用于逃避 否则将被视为一个 EVAL-表达。鉴于 字面表达式:\${exprA} \#{exprB}
答案 1 :(得分:3)
这通常不会发生冲突。 EL使用${}
语法。无论如何,您可以使用jQuery()
代替($()
只是简写)或者只是将JS代码放在自己的.js
文件中。