gpt4 book ai didi

javascript - 如何在 JSP 中将特殊字符传递给 JavaScript ..?

转载 作者:行者123 更新时间:2023-11-30 18:46:37 24 4
gpt4 key购买 nike

我知道javascript中有一个函数Escape(),JSTL中有一个escapeXml,我用了几种方法来解决这个问题,但没有得到解决方案。问题是..

假设 JSTL 变量 ${str} 的值为“system # with ^%$/<”。

我将此值作为 OnClick="special('${str}')"传递给 javascript

我得到一个错误:-

Error: unterminated string literal
Source File: <a href="http://localhost:8080/" rel="noreferrer noopener nofollow">http://localhost:8080/</a>..
Line: 1, Column: 27
Source Code:
special('system # with ^%$ / <

我无法将字符串本身传递给 javaScript。

PS:我从 mozilla 错误控制台复制了上面的错误声明。

最佳答案

听起来您需要转义字符串中的双 单引号。我会使用您定义的函数来执行此操作,而不是 fn:replace()因为引用有点粗糙。

最简单的方法是使用 Apache StringEscapeUtils#escapeJavaScript()功能。

Escapes the characters in a String using JavaScript String rules.

Escapes any values it finds into their JavaScript String form. Deals correctly with quotes and control-chars (tab, backslash, cr, ff, etc.)

So a tab becomes the characters '\\' and 't'.

The only difference between Java strings and JavaScript strings is that in JavaScript, a >single quote must be escaped.

Example:

input string: He didn't say, "Stop!"
output string: He didn\'t say, \"Stop!\"

所以您的 servlet 可以这样做:

request.setAttribute("str",
StringEscapeUtils.escapeJavaScript("\"system # with ^%$ / <\""));

然后您的 JSP 可以简单地包含:

... onclick="'${str}'" ...

您也可以创建一个自定义 EL 函数来执行此操作(使用下面相同的 escapeJavaScript() 函数),但这更复杂。

关于javascript - 如何在 JSP 中将特殊字符传递给 JavaScript ..?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5246427/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com