3

jsp ファイルには、次の宣言があります。

<jsp:useBean scope="request" id="products" class="java.util.ArrayList<sgt.supermarket.entity.Product>"/>

この宣言は GlassFish 2.1 では正常に機能しますが、Tomcat 6.0 に切り替えると例外がスローされます。

useBean クラス属性 java.util.ArrayList の値が無効です。

Glass Fish 2.1 とは動作が異なる Tomcat に欠けているライブラリはありますか?

4

2 に答える 2

5

EL はパラメーター化された型を認識しないため、その必要はありません。JSP/EL では、コンパイル時のチェックはまったくありません。ELは反射に基づいています。ただし、JSP/EL 仕様で指定されていないため、Glassfish で「機能する」ことに少し驚いています。

それとは別に、リクエストの制御と前処理にjsp:useBeana が使用されているまともな MVC アプリケーションでは、 はかなり余分です。Servlet

List<Product> procucts = productDAO.list();
request.setAttribute("products", products);
request.getRequestDispatcher("products.jsp").forward(request, response);

productsEL で からアクセスできるようになりました${products}。必要はありませんjsp:useBean

于 2009-12-15T16:17:37.307 に答える
0

レガシーコードを扱っていて、これらのrawタイプのJSP警告をすべて取り除きたい場合は、次の行に置き換えることができます。

<% request.setAttribute("products", 
       new java.util.ArrayList<sgt.supermarket.entity.Product>()); %>

しかし、BalusCは依然として正しいです。従来のMVCパターンを使用する場合は、ビューではなくコントローラーでこの製品リストを作成することをお勧めします。また、ビューファーストパターンを使用している場合は、この製品リストを作成してクリーンなJavaコードで埋める独自のJSPタグを作成することをお勧めします。

于 2013-02-12T12:25:21.987 に答える