1

作成したサーブレットからタイプの配列リストオブジェクトを取得しQueryClass、のクラスをインポートしようとしています。QueryClassこれにより、「」という名前のjspでオブジェクトを使用できますvalidate.jspが、jspファイルで属性を取得すると、オブジェクトが存在しないようですただし、私のサーブレットでは適切なデータで初期化され、正しい名前で設定されています。

私のサーブレットには、このスニペットがあります

QueryClass query = new QueryClass("","","","");

String searchName = request.getParameter("searchName");

ArrayList<QueryClass> data = query.getSearchedNames(searchName);

request.setAttribute("data",data);  

RequestDispatcher rd = request.getRequestDispatcher("validate.jsp");

rd.forward(request, response);

私のjspには次のものがあります

<%@page import="src.main.java.QueryClass"%>

<%
if(request.getAttribute("data")!=null) 
{
    ArrayList<QueryClass> value = (ArrayList<QueryClass>)request.getAttribute("data");
}
%>
4

1 に答える 1

1

あなたの要件は、基本的にスクリプトレットを廃止し、非推奨にした MVC アプローチを念頭に置くことで満たされます。

  1. 必要なデータをサーブレット メソッドのリクエスト属性として設定します。

    List<QueryClass> data = createList(...);
    request.setAttribute("data",data);
    request.getRequestDispatcher("validate.jsp").forward(request, response);
    
  2. EL 経由でリクエストのさまざまなプロパティ (セッション、アプリケーションなど) にアクセスします。

    ${data}
    

したがって、リストをトラバースしたいという希望を念頭に置くために、JSTL を使用した場合、JSP ではトラバーサルに次のスタイルを使用できます。

<ul>
    <c:forEach var="element" items="${data}">
        <li>${element.name}</li>
    </c:forEach>
</ul>

上記のコードは、クラスにgetName()メソッドが定義されている場合、データ オブジェクトから各要素の名前のリストを生成します。

于 2013-04-25T12:21:05.520 に答える