我遇到了一个小问题。
<button onclick="foo('${some_string_param}')"></button>
当some_string_param
不包含撇号时,它没有任何问题。但是当它包含任何撇号时,它会伴随未捕获的SyntaxError:意外的标识符错误。
我的foo调用应该改变什么?
答案 0 :(得分:1)
这是因为apostrophe
需要转义。你可以通过'
来逃避它。
检查所有有效格式的here
您可以使用
替换控制器中出现的撇号some_string_param.replaceAll("'", "'");
在请求中设置它们之前。
答案 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的另一种选择。
1)来自Apache公共lang库的StringEscapeUtils 2)来自Spring的HtmlUtils 3)使用String replace
自己的自定义方法