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") %>
см. этот пост.