0


この問題には多くのトピックがあることは知っていますが、私のものを修正することはできません..

オブジェクトを定義するクラスがあります

public class UserBean{

    private String string1;
    private String string1;

    public String getString1(){
           return String1;
    }

    public String getString2(){
           return String2;
}

次に、私のサーブレットには次のものがあります。

    //Create my Object1 and some other code...

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {

    // some code...

    HttpSession session = request.getSession(true);
    request.setAttribute("PassingObj", Object1);
    RequestDispatcher disp = getServletContext().getRequestDispatcher("/mypage.jsp");
    disp.forward(request, response);

次に、私のjspで:

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

    <% ArrayList<UserBean> cis = (ArrayList) session.getAttribute("PassingObj"); %>
    <c:forEach var="item" items="${cis}">
          <c:out value="${cis.getString1}" />
    </c:forEach>

そして、私はnullを取得します..
私のオブジェクトには内部に配列があります...サーブレット内のコンソールに同じものを出力することをテストしましたが、正常に動作します!! ありがとう..!

4

1 に答える 1

1

最初の問題は、request属性を設定し、 sessionからアクセスしています。もちろん、あなたはそれを取得しません。

次に、EL のスクリプトレットに設定された変数にアクセスできません。実際、スクリプトレットを使用する必要はありません。また、スクリプトレットを使用するべきではありません。実際、あなたの場合、そのスクリプトレット変数を設定しても意味がありません。

3 番目に、ループ変数itemを使用して Bean 変数にアクセスする必要があります。また、 ではなく、その名前を使用してフィールドに直接アクセスする必要がありますgetString。また、ゲッターを確認してください。間違った変数を返しています。それはコンパイルされません。

全体として、 JSTLELを使用して、リストを直接反復処理できます。

<c:forEach var="item" items="${PassingObj}">
      ${item.string1}
</c:forEach>

<c:out />タグを使用する必要はありません。を直接使用ELすると、同じ機能が得られます。

最後に、リクエストの属性とUserBeanフィールドに適切な名前を付けてください。

于 2013-08-03T10:15:22.163 に答える