0

これは、サーブレットから bean-object を含む ArrayList を取得し、その内容を jstl tag を使用して jsp に表示するための私のプログラムです。プログラムを実行した後、結果は表示されません。私のコードを見て、エラーを見つけるのを手伝ってください。私はjstlが初めてです。

サーブレット コード

package com.servlet;

import java.io.IOException;
import java.util.ArrayList;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.servlet.mybean;
@WebServlet("/Bean")
public class Bean extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public Bean() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        mybean mybean_obj = new mybean();
        ArrayList<mybean> obj=new ArrayList<mybean>();

        mybean_obj.id=100;
        mybean_obj.name="vishal";
        mybean_obj.roll=1225;

        mybean mybean_obj1 = new mybean();

        mybean_obj1.id=101;
        mybean_obj1.name="anand";
        mybean_obj1.roll=1226;

        mybean mybean_obj2 = new mybean();

        mybean_obj2.id=102;
        mybean_obj2.name="google";
        mybean_obj2.roll=1557;

        mybean mybean_obj3 = new mybean();

        mybean_obj3.id=103;
        mybean_obj3.name="yahoo";
        mybean_obj3.roll=1558;

        obj.add(mybean_obj);
        obj.add(mybean_obj1);
        obj.add(mybean_obj2);
        obj.add(mybean_obj3);
        HttpSession session = request.getSession();
        session.setAttribute("mybean", obj);
        request.setAttribute("mybean", obj);
        RequestDispatcher fwd = request.getRequestDispatcher("encodeUrl.jsp");
        fwd.forward(request, response);

    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    }

}

jspページ

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
        <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Encode URL </title>
</head>
<body>
 <c:forEach var="start" items="${sessionScope.mybean}">
      ${sessionScope.start.id}<br/>${sessionScope.start.roll }<br/>${sessiontScope.start.name }<hr/>
  </c:forEach>
</body>
</html>

私はホームページからサーブレットを呼び出しており、サーブレットからリクエストは上記のコードを持つ最終的なjspページに転送されます。

4

1 に答える 1

2

次のようにコードを書き直します。

<c:forEach var="start" items="${sessionScope.mybean}">
      ${start.id}<br/>${start.roll }<br/>${start.name }<hr/>
  </c:forEach>

var = "start"は、現在のアイテムを表すstartという名前のローカル変数を作成します。これは、forEachステートメント内で使用できます。(startと呼ばれるsessionScopeベースのBeanがないため、接頭辞をsessionScopeにする必要はありません)

コードに関するその他のヒント:

MyBean bean = new MyBean(); // classes start with an uppercase and use CamelCasing.
List<mybean> beans=new ArrayList<MyBean>(); // program against the list interface.
bean.setId(100); // use accessor methods instead of accessing variables directly.
于 2013-02-04T19:37:31.683 に答える