当我尝试将变量“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();
}
}
有人可以帮我吗?
答案 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页面上可以使用它的原因。