0

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

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

主.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); 
%>

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

4

2 回答 2

0

怎么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 中访问它。

主.jsp:

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

<% @ include file="WEB-INF/jspf/sample.jspf" %>

示例.jspf

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

尽量避免使用 scriplet,而是使用JSP 标准标记库和表达式语言。

主.jsp:

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

示例.jspf

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:if test="${not empty someVariable}">
    <c:out value="${someVariable}"/>
<c:if>
于 2014-06-25T07:33:58.723 回答
0

您可以在 Scriptlet 中使用它<% @SuppressWarnings("unchecked") %>,请参阅这篇文章

于 2017-03-27T12:49:54.717 回答