在JSP NetBeans中报告语法错误但结果看起来很好

时间:2014-01-13 10:04:01

标签: java jsp netbeans

我有一个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解析器,那么我会将其报告为错误。

1 个答案:

答案 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> 
]);