在jsp文件中抑制警告

时间:2014-06-25 07:15:45

标签: java eclipse jsp jsp-fragments

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

我将这个jspf包含在jsp文件的中间,但是jspf在包含之前依赖于代码中的变量。但是,即使一切正常,每次我验证我的代码时(在部署之前),Eclipse都会在jspf中标记错误。我可以放心地忽略错误并继续部署,但有没有办法通过该jspf文件中的抑制警告注释来删除该错误?

main.jsp中:

<% 
  String someVariable = "foo.bar"; 
%>
<% @ include file="WEB-INF/jspf/sample.jspf" %>

WEB-INF / JSPF / sample.jspf

<%
  // shows unresolved local variable error when validated
  // but can still deploy just fine if error is ignored
  if(someVariable != null && someVariable.length() > 0)
    out.println(someVariable); 
%>

上面的示例非常简单,但不会直接从URL调用sample.jspf。它将始终包含在其他一些jsp文件中。现在如何在验证时删除Eclipse中的错误标记?

2 个答案:

答案 0 :(得分:0)

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

JSP最终转换为Scriplet .java文件,如下所示,它就像你使用的是一个未在任何地方声明的局部变量。

sample_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" %>

sample.jspf

<%  
    out.println(request.getAttribute("someVariable")); 
%>

尽量避免使用scriplet,而是使用JSP Standard Tag Library和表达式语言。

main.jsp中:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:set var="someVariable" value="foo.bar"/>

sample.jspf

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

答案 1 :(得分:0)

您可以在Scriptlet <% @SuppressWarnings("unchecked") %>中使用它,请参阅此post