2

我需要将 jsp 字符串变量传递给 javascript 函数。这通常很简单,但我目前遇到问题,因为我传递的字符串包含 xml 字符。

这是jsp(为了清楚起见而缩短)

<%@page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core"   prefix="c"%>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <body>
        <input type="button" value="MyButton" onclick="myFunction('<c:out value="${current.xmlOutput}"/>');" />  
    </body>
 </html>  

“current.xmlOutput”中的值包含以下内容

<chart caption='Flight Hours' xAxisName='Flight' yAxisName='Hours' ><set label='AC908' value='126' /><set label='AC812' value='234' /><set label='AC184' value='78' /></chart>

生成的 JSP 源

<input type="button" value="MyButton" onclick="myFunction('&lt; chart  caption  = &#039;Flight Hours&#039; xAxisName  = &#039;Flight&#039; yAxisName  = &#039;Hours&#039;&gt;&lt; label  = &#039;AC908&#039; value  = &#039;126&#039; /&gt; &lt; label  = &#039;AC812&#039; value  = &#039;234&#039; /&gt; &lt; label  = &#039;AC184&#039; value  = &#039;78&#039; /&gt; &lt;/ chart &gt;');" />

当我按下按钮时,它永远不会调用该功能。如果“current.xmlOutput”包含像“Test”这样的简单字符串,一切正常。在 chrome 开发人员工具中,它给了我以下消息“Uncaught SyntaxError: Unexpected identifier”

另外,我有一个过滤器可以执行此操作 req.setCharacterEncoding("UTF-8"); 有人知道我在做什么错吗?任何帮助,将不胜感激。

谢谢

4

1 回答 1

1

原来我的问题是xml中的单引号。代替

<chart caption='Flight Hours' 

应该是

<chart caption=\'Flight Hours\'

如果您通过 Java/Servlet 将字符串传递给 jsp,那么您将需要这个

String xmlToPass = "<chart caption = \\'Flight Hours\\' "
于 2013-06-30T02:09:59.223 回答