2012-03-03 47 views
1

我有一個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

回答

0

<c:out>將特殊字符轉換爲HTML實體以防止注入。

您可以使用StringEscapeUtils.escapeJavaScript來自Apache的公共逃避你的字符串,然後輸出平原值與

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