2012-04-18 29 views
1

我设置在请求属性如下:如何从我的Servlet将新行字符传递给JavaScript?

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

我需要显示像上述(在警报箱):

参考编号:

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

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

} 

以上抛出脚本错误?我如何通过换行符?

+0

请不要混淆JSP和JavaScript。这些词的含义没有什么共同之处。 – rapadura 2012-04-18 13:33:39

+0

你收到的是什么“脚本错误”? – Anonymoose 2012-04-18 20:44:25

回答

4

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

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

0

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

你想要做的是从你的JSP/Servlet(JSP是一个Servlet)中输出一个字符串消息,用于JavaScript代码块。

要做到这一点,您的消息需要编码为JavaScript,比如使用JB Nizet描述的StringEscapeUtils.escapeECMAScript方法。

然后,你需要在你的JSP或Servlet创建响应,输出要将它的JavaScript时采取行动的变量,为此,你做

<%= confirmMsg %> 

,而不是$ {}作为是一种表达式语言,并不总是在每个jsp中都可用。

总之,从 “$ {confirmMsg}” 变化到<%= confirmMsg%>或<(%)=(字符串)的request.getParameter( “confirmMsg”)%> //或request.getAttribute等

+1

JSP EL已在yeaaaars之前引入。 Scriptlets是过去的几年和几年不应该使用的东西。 – 2012-04-18 14:55:08