如何在按钮onclick事件中将字符串参数传递给函数

时间:2014-11-04 07:13:54

标签: java javascript jsp

我遇到了一个小问题。

<button onclick="foo('${some_string_param}')"></button>

some_string_param不包含撇号时,它没有任何问题。但是当它包含任何撇号时,它会伴随未捕获的SyntaxError:意外的标识符错误。

我的foo调用应该改变什么?

2 个答案:

答案 0 :(得分:1)

这是因为apostrophe需要转义。你可以通过&apos;来逃避它。

检查所有有效格式的here

您可以使用

替换控制器中出现的撇号
some_string_param.replaceAll("'", "&apos;");
在请求中设置它们之前

阅读How to escape special characters in jsp

答案 1 :(得分:0)

想念我写答案而不是长评论链。正如@SanKrish所说,你需要在你的代码或html中转义具有重要意义的字符,然后再把它放在那里。为了防止你遇到的问题。撇号只是其中一个角色。

更简洁的方法是在使用之前使用HtmlUtils.htmlEscape来转义字符串。 任

<button onclick="foo('${HtmlUtils.htmlEscape(some_string_param)}')"></button>

//Somewhere
some_string_param = HtmlUtils.htmlEscape(some_string_param);

//later in the view
<button onclick="foo('${some_string_param}')"></button>

我建议第一种方式因为它更明显,但我不确定它的正确语法,因为我不知道JSP

编辑:似乎HtmlUtils来自春天。如果你不使用它,StringEscapeUtils是apache commons的另一种选择。

linked article

复制

1)来自Apache公共lang库的StringEscapeUtils 2)来自Spring的HtmlUtils 3)使用String replace

自己的自定义方法