我的系统:Ubuntu 9.10。带有Java EE 1.2.1的Eclipse 3.5.1(手动安装 - 不是来自synaptic)。 Web开发人员工具3.1.1
我最近采用了别人的代码(动态Web项目),并在Eclipse中遇到大量错误,警告和错误的语法突出显示。我已经将它缩小到这4行代码(创建一个新的Dynamic Web Project,然后是一个新的JSP页面,并把它放在正文中):
${(1<2)? "" : "no"}
<%for (int i = 0; i < 5; i++) {%>
<div>${5}</div>
<%}%>
错误/警告/语法突出显示不正确
line1:'&lt;'下的黄色警告行:文本字符串中使用的字符无效 ($ {(1&lt; 2)?“yes”:“no”})。
第2行:'f'下的红色错误行: 在此行找到多个注释:1)语法错误,插入“Finally”以完成TryStatement。 2)语法错误,插入“}”以完成ClassBody
第2行:')'下的红色错误行:令牌上的语法错误“)”,在此令牌后尝试预期
第3行:'div'下的黄色警告行:无结束标记(/ div)。
第3行:'&lt;'下的黄色警告线关闭div:多个注释 在此行找到:1)文本字符串中使用的字符无效($ {5}&lt;%}%&gt;)。 2)文本字符串中使用的字符无效($ {5}&lt;%}%&gt;)。
第3行:'/ div'是黑色和紫色(对于scriptlet代码?)而不是绿色代码
第4行:开头和关闭的scriplet标签'&lt;%'和'%&gt;'是黑色而不是橙色
该页面在浏览器中按预期工作:您获得“5”五次。如果将第1行的空引号更改为“是”,则保存,在编辑器中关闭文件,然后在项目浏览器中单击它&gt;验证,然后重新打开它:所有错误/警告/不正确的语法突出显示消失,除了第一个(无效字符)。这令人难以置信的刺激。任何想法都将不胜感激。
答案 0 :(得分:14)
Eclipse WTP很棒,但对于我来说,这个问题在Eclipse WTP中也是epic fail。他们似乎正在努力,但在那之前我只是通过 Web &gt;禁用/设置忽略与工作区首选项中的这些内容相关的所有验证。 JSP文件&gt; 验证&gt;将列表滚动到最底部并将所有EL验证设置设置为忽略。同样在主 Validation 首选项中,取消选中与JSP相关的所有复选框。然而,这似乎并没有消除每一个警告/错误,但它至少可以减少烦恼。
IntelliJ IDEA更好地处理JSP / EL验证。
对我来说,这些症状让我觉得WTP正在使用regexp而不是基于堆栈的解析器来验证HTML / JSP / EL。在结构化标记的情况下,这是big no-no。