Java 抑制jsp文件中的警告

Java 抑制jsp文件中的警告,java,eclipse,jsp,jsp-fragments,Java,Eclipse,Jsp,Jsp Fragments,如何在Eclipse中抑制jsp片段文件中的警告甚至错误 我有JSPF,我包含在JSP文件的中间,但是JSPF在代码被包含之前依赖代码中的一个变量。然而,即使一切正常,每次我在部署之前验证代码时,Eclipse都会用错误标记jspf。我可以安全地忽略错误并继续部署,但是有没有办法通过jspf文件中的suppress warning注释来删除该错误 main.jsp: <% String someVariable = "foo.bar"; requ

如何在Eclipse中抑制jsp片段文件中的警告甚至错误

我有JSPF,我包含在JSP文件的中间,但是JSPF在代码被包含之前依赖代码中的一个变量。然而,即使一切正常,每次我在部署之前验证代码时,Eclipse都会用错误标记jspf。我可以安全地忽略错误并继续部署,但是有没有办法通过jspf文件中的suppress warning注释来删除该错误

main.jsp:

<% 
     String someVariable = "foo.bar"; 
     request.setAttribute("someVariable",someVariable);
%>

<% @ include file="WEB-INF/jspf/sample.jspf" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:set var="someVariable" value="foo.bar"/>
WEB-INF/jspf/sample.jspf

<%  
    out.println(request.getAttribute("someVariable")); 
%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:if test="${not empty someVariable}">
    <c:out value="${someVariable}"/>
<c:if>
上面的示例非常简单,但sample.jspf永远不会直接从URL调用。它将始终包含在其他一些jsp文件中。现在,如何在验证时删除Eclipse中的错误标记?

sample.jspf如何知道它将成为main.jsp的一部分

JSP最终被转换为Scriplet.java文件,如下所示,这就像您在使用一个没有在任何地方声明的局部变量

示例jsp.java

public void _jspService(HttpServletRequest request, HttpServletResponse response)
    throws java.io.IOException, ServletException {
     JspWriter out = null;
     ...
     out.write(someVariable); // local variable that is never declared
     ...
}
替代溶液 如果您不想使用JSTL,请尝试Scriplet,但绝不建议您使用它。首先在第一个JSP中将其设置为请求或会话属性,并在另一个JSP中访问它

main.jsp:

<% 
     String someVariable = "foo.bar"; 
     request.setAttribute("someVariable",someVariable);
%>

<% @ include file="WEB-INF/jspf/sample.jspf" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:set var="someVariable" value="foo.bar"/>
sample.jspf

<%  
    out.println(request.getAttribute("someVariable")); 
%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:if test="${not empty someVariable}">
    <c:out value="${someVariable}"/>
<c:if>
尽量避免乱写乱画,而要使用表达语言

main.jsp:

<% 
     String someVariable = "foo.bar"; 
     request.setAttribute("someVariable",someVariable);
%>

<% @ include file="WEB-INF/jspf/sample.jspf" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:set var="someVariable" value="foo.bar"/>
sample.jspf

<%  
    out.println(request.getAttribute("someVariable")); 
%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:if test="${not empty someVariable}">
    <c:out value="${someVariable}"/>
<c:if>

您可以在Scriptlet中使用它,请参见。

很抱歉,我认为您没有正确理解我的问题。我只想抑制jsp文件中的编译器错误,而不是解决任何错误。我理解您关于使用jsp标记库的观点。上面的示例在包含的jspf文件中只包含一行。如果我必须处理someVariable,并且它需要更多的行,那么使用标记库会有很多标记来完成这项工作呢?在我的帖子中更新了它。not empty EL检查not null以及空字符串。因此,基本上,我必须将jspf文件中的所有java 10行或更多行转换为标记?是的,您可以轻松地转换它。有什么问题吗?如果您不能这样做,那么请先共享代码或阅读更多关于JSTL的信息。如果从未调用过它,为什么不注释未解析的部分sample.jspf文件将永远不会直接从URL调用。它将被放置在只允许包含的安全目录中。我将更新示例以反映一些条件。