如何逃脱'$'和#x27;#'在 Facelets/EL 中?

发布于 2024-10-31 17:44:39 字数 915 浏览 6 评论 0原文

我正在使用 Java Facelets 和 jQuery,但是 jQuery 中的表达式

$('...')

与 EL 表达式冲突,我如何转义 jQuery 的表达式?

我也想转义一大块 Javascript。

已解答

要将现有的 JSP 转换为 Facelets xhtml,只需用 包装现有的 javascript 就很方便。但是,

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

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

要解决此问题,您可以还应该注释掉 CDATA:

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

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

另请参阅 When is a脚本标记中是否需要 CDATA 部分?

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

波浪屿的海角声 2024-11-07 17:44:39

如果有人需要,表达式语言规范版本 2.2 维护版本 描述了如何转义 EL 表达式:

生成文字值
包含字符序列 "${"
"#{",开发者可以选择
使用复合表达式,如图所示
这里:

<前><代码>${'${'}exprA}
#{'#{'}exprB}

结果值将是
字符串 ${exprA}#{exprB}

或者,转义字符
\$\# 可以用来转义
否则将被视为
eval 表达式。鉴于
文字表达式:

<前><代码>\${exprA}
\#{exprB}

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}
一个人练习一个人 2024-11-07 17:44:39

这通常应该不会冲突。 EL 使用 ${} 语法。无论如何,您可以使用 jQuery() 代替( $() 只是简写)或者干脆将 JS 代码放在自己的 .js 文件中。

This should normally not conflict. EL uses ${} syntax. Anyway, you could either use jQuery() instead (the $() is just a shorthand) or simply put JS code in its own .js file.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文