SuppressWarnings в файле JSP

Как вы подавляете предупреждения (или даже ошибки) в файле фрагмента jsp в Eclipse?

У меня есть этот 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); 
%>

Приведенный выше пример очень прост, но sample.jspf никогда не будет вызываться напрямую из URL. Он всегда будет включен в какой-то другой файл JSP. Теперь, как удалить ошибку в Eclipse при проверке?

2 ответа

Решение

Как 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")); 
%>

Старайтесь избегать написания сценариев, вместо этого используйте стандартную библиотеку тегов JSP и язык выражений.

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>

Вы можете использовать его в Scriptlet <% @SuppressWarnings("unchecked") %>см. этот пост.

Другие вопросы по тегам