7

我的系统:Ubuntu 9.10。Eclipse 3.5.1 和 Java EE 1.2.1(手动安装 - 不是来自突触)。Web 开发者工具 3.1.1

我最近采用了别人的代码(一个动态 Web 项目),在 Eclipse 中遇到了很多错误、警告和不正确的语法突出显示。我已将其缩小到这 4 行代码(创建一个新的动态 Web 项目,然后是一个新的 JSP 页面,并将其放入正文中):

${(1<2)? "" : "no"}
<%for (int i = 0; i < 5; i++) {%>
<div>${5}</div>
<%}%>

错误/警告/不正确的语法突出显示

line1:'<'下的黄色警告行:文本字符串中使用了无效字符(${(1<2)?“yes”:“no”})。

line2:'f'下的红色错误行:在此行发现多个注释:1)语法错误,插入“Finally”以完成TryStatement。2)语法错误,插入“}”完成ClassBody

line2:')'下的红色错误行:令牌“)”上的语法错误,在此令牌之后尝试预期

line3:“div”下的黄色警告线:没有结束标记 (/div)。

line3:关闭div的'<'下的黄色警告行:在此行发现多个注释:1)文本字符串中使用的字符无效(${5} <%}%>)。2) 文本字符串中使用了无效字符 (${5} <%}%>)。

line3: '/div' 是黑色和紫色的(对于 scriptlet 代码?)而不是绿色的 HTML 代码

line4: 开始和结束的 scriplet 标签 '<%' 和 '%>' 是黑色而不是橙色

该页面在浏览器中按预期工作:您得到五次“5”。如果将第 1 行的空引号更改为“是”,然后保存,在编辑器中关闭文件,在项目资源管理器中单击它> 验证,然后重新打开它:所有错误/警告/不正确的语法突出显示消失,除了第一个(无效字符)。这非常令人恼火。任何想法将不胜感激。

4

1 回答 1

14

Eclipse WTP 很棒,但对我来说,这个问题在 Eclipse WTP 中也是一个史诗般的失败。他们似乎正在解决这个问题,但在那之前,我只是通过Web > JSP Files > Validation > 将列表滚动到最底部并设置所有 EL 验证设置为忽略。同样在主验证首选项中取消选中与 JSP 相关的所有复选框。然而,这似乎并没有消除所有警告/错误,但它至少可以最大限度地减少烦恼。

IntelliJ IDEA可以更好地处理 JSP/EL 验证。

To me, the symptoms make me think that WTP is using regexp instead of a stackbased parser to validate HTML/JSP/EL. This is a big no-no in case of structured markup.

于 2009-11-24T15:38:48.707 回答