将包含多行的Java String传递给javascript函数(使用Velocity)

时间:2011-08-16 13:36:11

标签: java javascript arguments velocity

我正在尝试将一个String变量传递给我的javascript函数,但我的变量有多行:例如:

String info = "aaaa \n bbb \n ccc";

我需要此表单才能正确显示它。现在我有一个带有信息字段的“结果”Java对象,我无法将其传递给我的javascript函数。

popupErrors('$!{result.info}')" 

问题是result.info是用新行放在这里的整个文本。我怎么解决这个问题?

4 个答案:

答案 0 :(得分:2)

也许popupErrors正在显示字符串和HTML弹出窗口而不是说javascript警报。因此,新行未显示,您需要将\n替换为<br/>,以便它们以HTML格式显示。 要么 也许$!{result.info}会自动将您的\n编码为&#010;

答案 1 :(得分:1)

您需要escape the string to Javascript format

popupErrors('$esc.javascript($result.info)') 

答案 2 :(得分:0)

您需要转换字符串,以便转义所有JavaScript特殊字符(行尾,“,”,制表符等)(\ n,\“,\',\ t \ t等)。< / p>

Commons-lang有StringEscapeUtils.escapeEcmaScript来做这件事。将此方法封装在JSP标记内,或者转义控制器中的字符串。

答案 3 :(得分:0)

用空格替换\ n。

Str.replace("\n"," ");

然后将字符串传递给javascript函数