javascript转义错误

问题描述:

我有一个jstl文件,它由一个javascript代码片段组成。javascript转义错误

<res:useJS target="exec-js"> 
new current.myfunction({ 
my_arg:{ 
<c:forEach items="${arguments.value}" var="dataresults" varStatus="loopcount"> 
    <c:out value="\"${dataresults}\" ${!loopcount.last ? ', ' : ']'}"/> 
</c:forEach> 
}); 
<res:useJS> 

但是当我运行它,我得到一个错误说“无效属性ID”当我看内容 - 这样的事已经过去了。 &#034;data_res1&#034,&#034;data_res1&#34,。我需要在结果中加双引号,因为这是我在JavaScript函数中解析它的方式。任何想法如何做到这一点?

+0

而dataresult的一个也有与在它的值又是一个特殊字符的可能性.. – ahsu 2012-03-03 03:36:39

<c:out>将特殊字符转换为HTML实体以防止注入。

您可以使用StringEscapeUtils.escapeJavaScript来自Apache的公共逃避你的字符串,然后输出平原值与

"${escapedText}" ${!loopcount.last ? ', ' : ']'}