我正在使用JSTL在JSP中的一些内联脚本中生成JavaScript对象,如下所示:
<script>
var data = [
<c:forEach items="${MyData}" var="Datum" varStatus="status">
{
foo: ${Datum.foo},
bar: '${Datum.bar}'
}<c:if test="${not status.last}">,</c:if>
</c:forEach>
];
</script>
并且Eclipse完全无法验证它。它生成的HTML是正确的 - 那么我如何让Eclipse停止尝试解释/验证JavaScript?
我在SO上遇到了许多类似的问题,但没有一个有效 - 包括转到首选项->
验证并检查“暂停所有验证器”框!
答案 0 :(得分:1)
如果有人仍然对解决方法感兴趣,
将代码放在jsp文件中并将其包含在jsp文件中将阻止javascript验证。
<script><%@include file="data_include.jsp" %></script>
另一个快速而又肮脏的解决方法:
<script>var data = [];</script>
<c:forEach items="${MyData}" var="Datum" varStatus="status">
<c:out value="${'<script>'}" escapeXml="false"/>
data.push({
foo: ${Datum.foo},
bar: '${Datum.bar}'
});
<c:out value="${'</script>'}" escapeXml="false"/>
</c:forEach>
即使您在服务器端进行序列化,Eclipse(Galileo)仍会在脚本标记中为c:out和$ {}提供验证错误。无论如何,我需要做以下的事情:
<c:out value="${'<script>var data = ${jsonData};</script>'}" escapeXml="false"/>
答案 1 :(得分:0)
您是否尝试使用CDATA转义代码?
<script>
//<![CDATA[
...
//]]>
</script>
有或没有//