我有一个JSP文件,其中包含从模型中的数据填充JavaScript数组的代码。 JSP如下所示:
data.addRows([
<c:forEach items="${AuditsByTime}" var="row">
[new Date(${row.key})<c:forEach items="${row.value}" var="c">,${c}</c:forEach>],
</c:forEach>
]);
NetBeans报告最终]);
上的语法错误(全部3个下划线)并报告错误:
“预期;但发现]”。
数据本身采用Java中的Map<Long, int[]>
形式。
如果我删除内部forEach
data.addRows([
<c:forEach items="${AuditsByTime}" var="row">
[new Date(${row.key})],
</c:forEach>
]);
然后它不再报告错误。在这两种情况下,虽然生成了页面,但它们看起来都很完美。
我发现了这个:http://forums.netbeans.org/topic54289.html但它似乎在讨论一个不同的问题,因为在这种情况下我确实在文件中指定了错误位置。
这里有一个微妙的问题我错过了或者我只是混淆了NetBeans解析器?我可以做些什么来删除错误报告吗?
如果我的代码坏了,我会解决它,如果它是NetBeans解析器,那么我会将其报告为错误。
答案 0 :(得分:1)
看起来你只是在混淆解析器。
据说生成的JS将在数组的末尾包含一个悬空逗号。您应该考虑使用JSTL fn:join而不是forEach循环。类似下面未经测试的代码可能对您有用(注意:当row.value为空时,它也有悬空逗号问题)
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
//...
data.addRows([
<c:forEach items="${AuditsByTime}" var="row">
[new Date(${row.key}),${fn:join(row.value,',')}],
</c:forEach>
]);