Tomcat 6.0は、generic arrayListを使用するために使用することを許可していません

StackOverflow https://stackoverflow.com/questions/1906123

質問

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の値は無効です。

Tomcatに見逃されたライブラリは、Glass Fish 2.1とは異なる動作をしていますか?

役に立ちましたか?

解決

エルはパラメーター化されたタイプを知らないので、そうする必要はありません。 JSP/ELでは、それについてまったくコンパイル時間チェックがありません。エルは反射に基づいています。しかし、JSP/EL specifciationで指定されていないため、Glassfishで「機能する」ことに少し驚いています。

それとは別に、 jsp:useBean まともなMVCアプリケーションではかなり余分です Servlet リクエストを制御および前処理するために使用されます。

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

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

他のヒント

レガシーコードを扱っていて、これらすべての生のJSP警告をすべて取り除きたい場合は、これにラインを置き換えることをお勧めします。

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

しかし、Baluscはまだ正しいです。古典的なMVCパターンを使用する場合、ビューではなくコントローラーでこの製品リストを作成することをお勧めします。また、ビューファーストパターンを使用している場合は、この製品リストを作成してクリーンJavaコードに記入する独自のJSPタグを作成することをお勧めします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top