我的系统: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> <%}%>
错误/警告/语法突出显示不正确
第1行:“ <”下方的黄色警告行:文本字符串中使用了无效字符($ {(1 <2)?“是”:“否”})。 第2行:“ f”下的红色错误行:在此行发现多个注释:1)语法错误,插入“最后”以完成TryStatement。2)语法错误,插入“}”以完成ClassBody 第2行:“)”下的红色错误行:令牌“)”上的语法错误,请在此令牌后尝试尝试 第3行:“ div”下的黄色警告线:无结束标记(/ div)。 第3行:关闭div的“ <”下方的黄色警告线:在此行发现多个注释:1)文本字符串中使用的字符无效($ {5} <%}%>)。2)文本字符串($ {5} <%}%>)中使用的字符无效。 第3行:“ / div”是黑色和紫色(用于scriptlet代码?),而不是绿色(用于HTML代码) 第4行:开头和结尾的Scriplet标签’<%’和’%>’是黑色而不是橙色
第1行:“ <”下方的黄色警告行:文本字符串中使用了无效字符($ {(1 <2)?“是”:“否”})。
第2行:“ f”下的红色错误行:在此行发现多个注释:1)语法错误,插入“最后”以完成TryStatement。2)语法错误,插入“}”以完成ClassBody
第2行:“)”下的红色错误行:令牌“)”上的语法错误,请在此令牌后尝试尝试
第3行:“ div”下的黄色警告线:无结束标记(/ div)。
第3行:关闭div的“ <”下方的黄色警告线:在此行发现多个注释:1)文本字符串中使用的字符无效($ {5} <%}%>)。2)文本字符串($ {5} <%}%>)中使用的字符无效。
第3行:“ / div”是黑色和紫色(用于scriptlet代码?),而不是绿色(用于HTML代码)
第4行:开头和结尾的Scriplet标签’<%’和’%>’是黑色而不是橙色
该页面可以在浏览器中正常运行:您获得五次“ 5”。如果将第1行上的空引号更改为“是”,然后保存,在编辑器中关闭文件,在项目资源管理器中单击该文件>验证,然后重新打开它:所有错误/警告/不正确的语法突出显示都会消失,但第一个(无效字符)。这令人难以置信。任何想法将不胜感激。
Eclipse WTP很棒,但是对我来说,正是这个问题在Eclipse WTP中也是史诗般的失败。他们似乎正在努力解决这个问题,但是直到那之前,我只是通过 Web > JSP文件 > 验证
滚动列表在最底端禁用/设置以忽略与工作区首选项中与此内容相关的所有验证,并将所有EL验证设置为最底部设置以忽略。同样在主 Validation 首选项中,取消选中与JSP相关的所有复选框。但是,这似乎并不能消除所有警告/错误,但至少可以将烦恼降到最低。
IntelliJ IDEA可以更好地处理JSP / EL验证。
对我来说,这些症状使我认为WTP正在使用regexp而不是基于堆栈的解析器来验证HTML / JSP / EL。在结构化标记的情况下,这是一个很大的禁忌。