将变量从一个JSP传递到另一个JSP

时间:2015-05-27 08:24:31

标签: jsp servlets

当我尝试将变量“valeur”从fiche1.jsp传递给fiche2.jsp时,它可以工作,我可以显示查询的结果,但是当我尝试从fiche2.jsp返回到fiche1.jsp并通过它变量“valeur”以便我可以执行查询,我的jsp中没有显示结果[fiche1.jsp]

我试图测试我是否可以在fiche1.jsp中显示变量的值,但我得到的值为null。

fiche1.jsp

<body>
<%String val=(String)request.getAttribute("val");
                    System.out.println(val);
                    System.out.println("hayhay");
                 %>

                    <div class="onglets_html">
                         <div class="onglets">
                            <div class="onglet_y onglet"><a href="fiche1.jsp">Quoi</a></div>
                            <div class="onglet_n onglet"><a href="fiche2?valeur=<%=val%>">Qui</a></div>
                            <div class="onglet_n onglet"><a href="fiche3.jsp">Pourquoi</a></div>
                         </div>

                         <form method="get" action="fiche1">
                                <table border="1" cellpadding="3pt" align="center">
                                    <tr>
                                        <c:forEach var="acteur" items="${listActeur}">
                                    <tr>
                                        <td>salma</td>
                                        <td><c:out value="${acteur[0]}" /></td>
                                        <td><c:out value="${acteur[1]}" /></td>

                                    </tr>
                                        </c:forEach>
                                </table>
                            </form>
                    </body>
        </html>

Fiche1ControllerServlet

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

        HttpSession session = request.getSession(true);

        try {
            Session session1=HibernateUtil.getSessionFactory().getCurrentSession();
            String val=request.getParameter("valeur");
            session1.beginTransaction();
            List<Projet> list = 
                    session1.createQuery("select a.nomActeur, a.prenomActeur from Acteur a join a.acteurProjets p  where p.libelle= :libelle")
                            .setString("libelle", val)
                            .list();

            request.setAttribute("listActeur", list);
            request.setAttribute("val",val);
            request.getRequestDispatcher("fiche1.jsp").forward(request, response);
            session1.close();

               System.out.println(val);

           } catch (Exception e) {

               e.printStackTrace();
           }
        }

fiche2.jsp

<body>      
    <%String val=(String)request.getAttribute("val"); 

    %>

            <div class="onglet_n onglet"><a href="fiche1?valeur=<%=val%>">Quoi</a></div>
            <div class="onglet_y onglet"><a href="fiche2.jsp">Qui</a></div>
            <div class="onglet_n onglet"><a href="fiche3.jsp">Pourquoi</a></div>
        </div>

    <form method="get" action="fiche2">
                            <table border="1" cellpadding="3pt" align="center">
                                <tr>
                                    <c:forEach var="beneficiaire" items="${listBeneficiaire}">
                                <tr>
                                    <td>salma</td>
                                    <td><c:out value="${beneficiaire[0]}" /></td>
                                    <td><c:out value="${beneficiaire[1]}" /></td>
                                    <td><c:out value="${beneficiaire[2]}" /></td>
                                    <td><c:out value="${beneficiaire[3]}" /></td>
                                </tr>
                                    </c:forEach>
                            </table>
                        </form>
</body>
</html>

Fiche2ControllerServlet

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

        HttpSession session = request.getSession(true);

        try {
            Session session1=HibernateUtil.getSessionFactory().getCurrentSession();
            String val=request.getParameter("valeur");
            session1.beginTransaction();
            List<Projet> list = 
                    session1.createQuery("select b.nomBénéficiaire, b.prenomBénéficiaire, b.fonctionBénéficiaire, b.emailBénéficiaire from Bénéficiaire b join b.bénéficiaireProjets p  where p.libelle= :libelle")
                            .setString("libelle", val)
                            .list();

            request.setAttribute("listBeneficiaire", list);

            request.getRequestDispatcher("fiche2.jsp").forward(request, response);
            session1.close();

           } catch (Exception e) {

               e.printStackTrace();
           }

       }

有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

在第二个servlet Fiche2ControllerServlet中,你没有在转发之前设置变量:

request.setAttribute("listBeneficiaire", list);

request.setAttribute("val",val); // SEEMS YOU MISSED THIS LINE

request.getRequestDispatcher("fiche2.jsp").forward(request, response);

在您的第一个控制器servlet中,您已设置变量,这就是您在jsp页面上可以使用它的原因。