2

プロジェクト内のJSPファイルの次のプレビューを考えます。

<%@ page contentType="text/html; charset=utf-8" language="java"%>
<%@ page import="java.util.ArrayList"%>
<%@ page import="beans.UserBean"%>
<jsp:useBean id="userBean" class="beans.UserBean" scope="session" />
<jsp:useBean id="students" type="ArrayList<beans.UserBean>" scope="session" />
<jsp:useBean id="teachers" type="ArrayList<beans.UserBean>" scope="session" />
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

Eclipseで次のエラーが発生します:

Undefined type: ArrayList

どうしたの ?をインポートしているにもかかわらずArrayList、Eclipseはそれを認識せず、次の2行に上記のメッセージを表示します。

<jsp:useBean id="students" type="ArrayList<beans.UserBean>" scope="session" />
<jsp:useBean id="teachers" type="ArrayList<beans.UserBean>" scope="session" />

より鮮明な画像のために:

私がどこで失敗したのか考えていますか?ありがとう

4

1 に答える 1

4

属性は、ジェネリック宣言などではなく、クラスのtype完全修飾名を表す必要があります。さらに、JSP/ELはジェネリック型をまったく認識していません。

java.util.ArrayList代わりに使用してください:

<jsp:useBean id="students" type="java.util.ArrayList" scope="session" />
<jsp:useBean id="teachers" type="java.util.ArrayList" scope="session" />

それら@page importはすべて不要です。これらは、スクリプトレット(JSP 2.0以降推奨<% %>されていない古いもの)を使用する場合にのみ使用されます。

ちなみに、これらの配列リストが事前にサーブレットによって準備されてスコープに入れられていて、ELでそれらにアクセスするだけであれば、これらのタグはまったく必要ありません。属性の代わりに属性<jsp:useBean>を使用すると、実際にサーブレットを使用していることが多少なりとも示唆されます。これらのタグがなくても問題なく動作します。サーブレットのwikiページも参照してください。typeclass<jsp:useBean>

于 2012-06-30T23:58:44.457 に答える