我想知道一种方法如何将JSTL的foreach的1个指定项目发送到其他JSP或servlet,以打印有关该项目的详细信息。
提供以下代码:
<c:forEach var="note" items="${notes}">
<tr>
<td>${note.getTitle()}</td>
<td>${note.getRealDate()}</td>
<td>${note.getUserDate()}</td>
<td>
<form action="showdetails.jsp">
<input type="submit" value="show details" name="details" />
</form>
</td>
</tr>
</c:forEach>
我需要更换我的表格,或者重新制作它,以获得能够完成工作的东西,而且我的想法不合时宜......
啊,顺便说一句。注意上面显示的方法为+showDetails()
,并返回String
。我希望全部显示它们,或者只在jsp / servlet中执行String all = note.toString();
答案 0 :(得分:4)
只需将标识符作为请求参数传递,并将URL更改为servlet。如果您坚持使用提交按钮,请将标识符作为隐藏输入字段传递:
<form action="showdetails">
<input type="hidden" name="id" value="${note.id}" />
<input type="submit" name="details" value="show details" />
</form>
在映射到/showdetails
网址格式的servlet中,只需在doGet()
方法中执行以下作业:
String id = request.getParameter("id");
Note note = noteService.find(id);
request.setAttribute("note", note);
request.getRequestDispatcher("/WEB-INF/showdetails.jsp").forward(request, response);
在showdetails.jsp
中,您可以使用${note}
访问所选的Note
。
正如上面的servlet在使用链接时也可以使用,正如Bozho建议的那样,只有一点点差别,在servlet中你能够预处理请求(找到并准备正确的Note
对象用于显示)。
<a href="showdetails?id=${note.id}">show details</a>
答案 1 :(得分:3)
您不需要<form>
。只需添加一个链接,使用唯一标识该项目的字段:
<a href="showdetails.jsp?noteId=${note.id}">show details</a>