0

我正在研究谷歌日历 API。每当我创建任何事件并输入具有新行的该事件的描述时,它都会给我如下错误:

“未终止的字符串常量”。

我将事件描述从 Java 传递到 Javascript。那么如何格式化具有新行的字符串呢?

我的代码是:

 var EventDescription='<% =eventDetails.getEventDescription(eventIndex)%>'

    eventDetails -java class 
    getEventDEscription -Method to get the Description of event.
    eventIndex - no of the event whoes Description is needed .

否则它工作正常。只有在描述有新行时才会出错。

4

1 回答 1

5

试着把自己想象成 JSP 容器,然后想象成 JavaScript 解释器。或者简单的看一下生成的 HTML 页面的源代码。

线

var EventDescription='<% =eventDetails.getEventDescription(eventIndex)%>'

由 JSP 容器解释。soeventDetails.getEventDescription(eventIndex)被执行,并且这个方法调用的结果被放入响应中。假设结果由两行组成:

line 1
line 2

所以生成的 JavaScript 代码是:

var EventDescription='line1
line 2'

这是无效的 JavaScript 代码。正确的 JavaScript 代码是

var EventDescription='line1\nline 2'

因此,您需要在将 Java 方法调用的结果放入响应之前对其进行 JavaScript 转义。查看 Apache commons-lang StringEscapeUtils.escapeEcmaScript()方法。

于 2012-05-09T10:04:03.927 回答