0

Eclipseのjspフラグメントファイルで警告(またはエラー)をどのように抑制しますか?

jsp ファイルの途中にこの jspf をインクルードしていますが、その 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でエラーマークを削除する方法は?

4

2 に答える 2

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

サンプル.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"/>

サンプル.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 に答える