如何从Servlet中将新行字符传递给JavaScript?

时间:2012-04-18 13:22:50

标签: java javascript jsp servlets newline

我在请求属性中设置了以下内容:

confirmMsg = "REf No: \n 112"; 
req.setAttribute("confirmMsg", confirmMsg); 

我需要将上面的内容显示为(在警告框中):

参考编号:

112

我在JavaScript中使用以下onload函数来显示加载页面的消息。

function onLoad() {
 var msg = "${confirmMsg}";
  if(msg != null && msg != "") {
    alert(msg);
   }

}

以上抛出脚本错误?如何传递换行符?

2 个答案:

答案 0 :(得分:4)

\n需要进行JavaScript转义才能放入JavaScript字符串文字中。

使用commons-lang StringEscapeUtils.escapeECMAScript()来缓解消息,并将此转义消息传递给JSP。

答案 1 :(得分:0)

正如我所提到的,不要将JSP与JavaScript混淆。

您要做的是从JSP / Servlet(JSP是一个Servlet)输出一个字符串消息,以便在JavaScript代码块中使用。

要执行此操作,您的消息需要针对JavaScript进行编码,例如使用JB Nizet描述的StringEscapeUtils.escapeECMAScript方法。

然后,您需要在创建响应的jsp或servlet中输出您希望javascript操作的变量,为此您可以

<%= confirmMsg %>

而不是$ {},因为这是一种表达式语言,并不是每个jsp都可用。

简而言之,从“$ {confirmMsg}”更改为&lt;%= confirmMsg%&gt;或&lt;%=(String)request.getParameter(“confirmMsg”)%&gt; //或request.getAttribute等等