1

jsp ページにオブジェクトを渡して、List<String[]>それを jstl で処理しようとしています。

私のサーブレット:

request.setAttribute("rows", entries);
request.getRequestDispatcher("/pages/result.jsp").forward(request, response);

ページ:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
...
${rows}
<c:forEach items="${rows}" var="row">
   <tr>
      <c:forEach items="${row}" var="field">
         <td>${field}</td>
      </c:forEach>
   </tr>
</c:forEach>

パラメータは認識されません - つまり、${rows}およびとして出力されます${field}

面白いことに、この方法を使用して同じことを行うと(これは悪い習慣だと理解しています):

<% 
List<String[]> entries = (List<String[]>) request.getAttribute("rows"); 
for...
%>

私は何が欠けていますか?

4

1 に答える 1

1

つまり、${rows}および${field}として出力されます

では、EL式は評価されませんか?これは、使用されているJSTLバージョン、使用されているservletcontainerバージョン、およびwebappのweb.xmlバージョンの間にバージョンの非互換性がある場合に発生する可能性があります。

最初に、ターゲットサーブレットコンテナで最大サポートされているサーブレットAPIバージョンを特定する必要があります。次に、実際に必要なJSTLバージョンと、web.xml宣言する必要のあるバージョンを決定できます。

サーブレット3.0互換のコンテナであるTomcat7を使用していると想像してください。次に、少なくともJSTL 1.2を使用し、web.xmlサーブレット3.0に準拠していると宣言する必要があります。または、サーブレット2.5互換のコンテナであるTomcat 6を使用している場合は、少なくともJSTL 1.1を使用している必要があり、web.xmlサーブレット2.5に準拠していると宣言する必要があります。

よりまれな原因は、初心者の間では珍しいことではありませんが、webapp/WEB-INF/libがservletcontainer固有のJARファイルなどで誤って乱雑になっているel-api.jarことです。これは、ターゲットのservletcontainer自体によって提供されるELインストールとのみ競合します。

参照:

  • JSTL wikiページ-バージョン/インストールの詳細、ダウンロードリンク、およびweb.xmlの例が含まれています。
于 2012-12-07T16:02:26.183 に答える