从JSP到Servlet的集合发布

时间:2011-06-04 07:39:28

标签: jsp servlets post collections

如何在表单中的jsp中将一个集合(对象列表)发布到servlet?

感谢。

1 个答案:

答案 0 :(得分:1)

HTTP / HTML不了解Java对象。在将它们放入HTML中时,您必须将它们转换为字符串,然后在从请求参数中提取它们时将它们转换回来。

String yourCollectionAsString = getAsString(yourCollection);
request.setAttribute("yourCollectionAsString", yourCollectionAsString);
request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response);

<input type="hidden" name="yourCollection" value="${yourCollectionAsString}" />

String yourCollectionAsString = request.getParameter("yourCollection");
List<SomeObject> yourCollection = getAsObject(yourCollectionAsString);

Google Gson这样的JSON解析器在这里可能很有用,因为它在一行Java代码中将Java对象序列化和反序列化为相对紧凑的String格式(对于客户端的JavaScript,它也可以重用,对于案例)。


或者,您也可以将它与长而唯一的自动生成ID一起存储在会话中,并传递该ID。

String yourCollectionID = UUID.randomUUID().toString();
request.getSession().setAttribute(yourCollectionID, yourCollection);
request.setAttribute("yourCollectionID", yourCollectionID);
request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response);

<input type="hidden" name="yourCollectionID" value="${yourCollectionID}" />

String yourCollectionID = request.getParameter("yourCollectionID");
List<SomeObject> yourCollection = (List<SomeObject>) request.getSession().getAttribute(yourCollectionID);
request.getSession().removeAttribute(yourCollectionID);