JSTL foreach var发送到jsp / servlet

时间:2011-05-17 11:19:49

标签: java jsp servlets jstl

我想知道一种方法如何将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();

2 个答案:

答案 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>