Сборник сообщений от JSP к сервлету - PullRequest
1 голос
/ 04 июня 2011

как разместить коллекцию (список объектов) в сервлете в jsp внутри формы?

Спасибо.

1 Ответ

1 голос
/ 04 июня 2011

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);

Анализатор JSON, такой как Google Gson , может быть полезен здесь, поскольку он сериализует и десериализует объекты Java в относительно компактный формат String в одну строку кода Java (который также можно повторно использовать для JavaScript на стороне клиента , для случая, что).


Кроме того, вы также можете сохранить его в сеансе вместе с длинным уникальным автоматически сгенерированным идентификатором и вместо этого передать этот идентификатор.

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...