bob*_*tko 20 java eclipse variables jsp include
我有jsp页面看起来像这样:
<%@ include file = "/Title.jsp" %>
<%@ include file = "/Header.jsp" %>
<html>...</html>
Run Code Online (Sandbox Code Playgroud)
在Title.jsp中有一个"user"的实例,让我们说:
User user = new User();
Run Code Online (Sandbox Code Playgroud)
在Header.jsp中,用户被引用为
user.setName("John");
Run Code Online (Sandbox Code Playgroud)
Eclipse在header.jsp文件中显示"用户无法解析为变量"的错误.我完全理解为什么.有没有办法让Eclipse忽略这个特定变量的特定错误?有什么可以在这里完成的吗?
在工作中,我支持一些旧的(和大而丑陋的)Java应用程序,它实际上是一个Web应用程序.我正在尝试将此Java项目转换为Java动态Web项目.在我转换它之前,Eclipse并不关心这些悬挂变量到处都是.现在,在Dynamic Web Project中,Eclipse正在抱怨.
重写代码是不可能的.每个jsp文件由多个包含大量全局变量的文件组成.我不会触及它比我需要的更多.
Rav*_*yal 31
理想情况下,不应该<% // scriptlet %>在JSP中有任何块.
JSP已经从简单地将Java代码隐藏在标准操作和自定义标记之后演变为使用表达式语言,JSTL和现在的OGNL表达式来从任何一个应用程序范围中可用的预先填充的JavaBeans获取结果(对于刚刚处理的请求) (如会话,请求,页面等)或复杂的数据存储(如Struts 2中的ValueStack).
所以,一个合适的解决方案看起来像(不能使用EL,因为我们需要一个"用户"参考)
<jsp:useBean id="user" class="foo.User" /> <!-- scope="page" by default -->
Run Code Online (Sandbox Code Playgroud)
添加到这行代码时Title.jsp会创建一个新Userbean并将其添加到page作用域中,然后同一行代码将从作用域中Header.jsp检索Userbean page并为其指定一个名称user,然后可以在整个文件的其余部分使用.
但是,由于其余的Java代码不是用标签编写的,因此这没有多大意义.因此,您还可以使用一个<%// scriptlet%>块将这两个JSP之间的bean作为请求属性传递.
<% // in Title.jsp
request.setAttribute ("user", new User());
%>
<% // in Header.jsp
User user = request.getAttribute ("user");
user.setName ("John Doe");
%>
Run Code Online (Sandbox Code Playgroud)
如果代码库太大而不能打捞并且使用任何最佳实践那么简直是不切实际的; 您可以将Eclipse IDE配置为忽略JSP语法验证错误,或者更好地仅针对JSP片段或特定文件和文件夹关闭它们.
在工作区中选择您的Web项目后转到Project > Properties > Validation > JSP Syntax.然后Enable project specific settings关闭Validate JSP fragments,如下所示.

JSP片段是.jspf包含JSP/HTML段而不打开和关闭标头标记的文件(当然,除非它是标题或页脚片段).因此,尽管您必须将文件重命名.jspf为Eclipse,以便将它们识别为片段(而不是验证); 主要优点是:
如果包含文件的数量很大或者由于某种原因无法重命名,那么您的下一个最佳选择是将它们移动到单独的文件夹(如includes)中,然后从JSP语法验证中排除文件夹本身.
再次,转到项目>属性>验证,并启用项目特定设置,单击浏览类型[...]按钮以访问JSP Syntax Validator设置.

在这里,首先创建一个Exclude Group,然后Add Rule到排除的文件夹(如的WebContent /包括从JSP语法验证在图像中).

现在Eclipse将停止报告此include文件夹中删除的任何JSP文件的错误.您可以对单个文件使用相同的方法,但它的实用程度又取决于您拥有多少这样的片段.
对于你的问题:有没有办法让Eclipse忽略这个特定变量的特定错误?如上所述,错误来自Eclipse中的验证框架.你能做的最好的事情是告诉eclipse忽略那个文件 - 不是那个错误或那个变量.为此,右键单击项目并拉出其属性对话框.在那里,选择"验证"并单击"启用项目特定设置"复选框.从那里你可以打开或关闭特定的验证.就个人而言,我没有发现Eclipse验证器都是有用的,它们需要相当多的处理时间,所以我几乎把它们全部关闭了!但是,您可以通过"设置"列进行一些细粒度控制.您点击了JSP内容验证器(例如)旁边的省略号,您可以从那里专门排除Header.jsp.
希望这有所帮助,它只提供早期评论的细节.