如何逃脱'$'和#x27;#'在 Facelets/EL 中?
我正在使用 Java Facelets 和 jQuery,但是 jQuery 中的表达式
$('...')
与 EL 表达式冲突,我如何转义 jQuery 的表达式?
我也想转义一大块 Javascript。
已解答
要将现有的 JSP 转换为 Facelets xhtml,只需用 包装现有的 javascript 就很方便。但是,
的输出脚本由
注释包裹,这与 CDATA 部分冲突:
<script><![CDATA[ scripts... ]]></script>
=> <script><!-- <![CDATA[ scripts... ]]> --></script>
要解决此问题,您可以还应该注释掉 CDATA:
<script>/* <![CDATA[ */ scripts... /* ]]> */</script>
=> <script><!-- /* <![CDATA[ */ scripts... /* ]]> */--></script>
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?.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果有人需要,表达式语言规范版本 2.2 维护版本 描述了如何转义 EL 表达式:
Should anyone need to, the Expression Language Specification Version 2.2 Maintenance Release describes how to escape EL expressions:
这通常应该不会冲突。 EL 使用
${}
语法。无论如何,您可以使用jQuery()
代替($()
只是简写)或者干脆将 JS 代码放在自己的.js
文件中。This should normally not conflict. EL uses
${}
syntax. Anyway, you could either usejQuery()
instead (the$()
is just a shorthand) or simply put JS code in its own.js
file.