大家好,我用jpql对数据库中的对象进行查询,再用 request.getRequestDispatcher将查询结果传递到相应的jsp页面,在jsp页面以foreach函数显示查询结果,却抛出以下异常:
javax.servlet.ServletException: PWC1232: Exceeded maximum depth for nested request dispatches: 20jsp代码如下:
==================================================================
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@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=UTF-8">
        <title><jsp:include page="title.jsp"/></title>
    </head>
    <body>
        <jsp:include page="Header.jsp"/>
        <h1>Hello World!</h1>
        <table id="referenceListTable" border="3">
            <tr >
                <th bgcolor=>Reference Name &nbsp;&nbsp;</th>
                <th bgcolor=>Date &nbsp;&nbsp;</th>
                <th bgcolor=>Client Name &nbsp;&nbsp;</th>
                <th bgcolor=>Rate &nbsp;&nbsp;</th>
                <th bgcolor=>Volume &nbsp;&nbsp;</th>
            </tr>
            <c:forEach var="Ref" begin="0" items="${requestScope.ReferenceList}">
                <tr>
                    <td>${Ref.refName}&nbsp;&nbsp;</td> 
                    <td>${Ref.refDate}&nbsp;&nbsp;</td> 
                    <td>${Ref.clientName}&nbsp;&nbsp;</td>
                    <td>${Ref.suppMin}&nbsp;&nbsp;</td>
                    <td>${Ref.volume}&nbsp;&nbsp;</td>
                </tr> 
            </c:forEach>
        </table>
    </body>
</html>
==========================================================servlet代码如下:import java.io.*;
import java.util.List;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;import javax.persistence.PersistenceUnit;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityManager;/**
 *
 * @author Yifan_ZHANG
 */
@WebServlet(name = "ListReferenceServlet", urlPatterns = {"/ReferenceList.jsp"})
public class ListReferenceServlet extends HttpServlet {    @PersistenceUnit
    private EntityManagerFactory emf;    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        response.setContentType("text/html;charset=UTF-8");
        assert emf != null;  //Make sure injection went through correctly.
        EntityManager em = null;
        try {
            em = emf.createEntityManager();            //query for all the References in database
            List Reference = em.createQuery("select r from TargetRef r").getResultList();
            request.setAttribute("ReferenceList", Reference);            //Forward to the jsp page for rendering
            request.getRequestDispatcher("ReferenceList.jsp").forward(request, response);
        } catch (Exception ex) {
            throw new ServletException(ex);
        } finally {
            //close the em to release any resources held up by the persistebce provider
            if (em != null) {
                em.close();
            }
        }
    }
==============================================================这是一个很简单的功能,我是直接在netbeans 的一个sample的基础上改的,不知道运行后为什麽不行,小弟是新手,希望有朋友帮忙指出问题,我弄了一个上午都不知道问题在哪儿。谢谢啦!