| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > Обработка JSP страницы с возвратом в сервлет |
| Автор: bavar 18.6.2009, 17:12 | ||
| Всем доброго дня. У меня есть довольно занятная проблема, надеюсь вы поможете мне с ней разобраться )) Есть следующая ситуация: 1. сервлет контейнер (Tomcat 5.5) получает AJAX запрос от клиента 2. сервлет обрабатывает запрос и формирует необходимые данные 3. Далее необходимо обернуть собранные данные в HTML при помощи JSP 4. Полученный фрагмент HTML кода и вернуть клиенту в виде JSON. Вся загвоздка состоит в пункте 3 ((( Каким образом запустить обработку jsp страницы так, чтобы в результате управление вернулось обратно в сервлет и я смог получить сгенерированный HTML в виде строки???? Я нашел следующий метод, но мне он кажется какимто "костыльным". Думается что есть более верный вариант. Мой вариант: создать mock для объекта HttpServletResponse и сделать форвард на требуемую jsp страницу, а потом из mock'a получить HTML. Вот как это выглядит в коде:
|
| Автор: tux 18.6.2009, 19:37 |
| bavar, обязательно нужен JSP? Шаблонные движки типа Velocity или Freemarker не подойдут? Я не говорю, что JSP невозможно, но шаблонным движком все было бы проще. |
| Автор: bavar 19.6.2009, 09:36 |
| garbuz, попробую описать более детально. Изначально цель стоит такая: в web приложении где используется много AJAX, необходимо по запросу пользователя модифицировать несколько блоков сайта, т.е. к примеру пользователь добавил новую запись и необходимо полностью перестроить облако меток/тегов (это грубый пример, но для понимания сути вполне подойдет )) ). Поэтому хочется на сервере получить из базы эти метки/теги и обернуть их в HTML: <ul><li>tag1</li> <li>tag2</li></ul> (Простой пример). Для генерации HTML используется JSP. Затем, неизвестным мне способом, получить в сервлете это HTML как строку, прибавить к нему еще несколько кусков HTML'я для других частей сайта и еще какиенить данные, обернуть все это дело в JSON и оптравить все это клиенту - и пусть дальше Javascript разбирается со всем этим )) Надеюсь теперь более понятно объяснил. tux, к сожалению уже очень много кода написано на JSP и отказать от него не имею возможности, но обяхательно почитаю про эти фреймворки. |
| Автор: MisterCleric 19.6.2009, 09:53 | ||
| С вашего позволения я тоже вмешаюсь в вашу дискуссию. Я в своем проекте использую MVC-framework http://www.opensymphony.com/webwork/. а также для рисования всяких отчетных табличек с сортировкой и пейджинированием использую http://displaytag.sourceforge.net/1.2/. Так вот была такая задача, что заказчик заказал еще кроме сортировки и пейджинга прикрутить к таким табличкам фильтрацию в виде отдельной строки в самой таблице. Собственно вставку строки я делаю таким способом:
В определенном классе-декораторе, который я указал DisplayTag в конкретной таблице. Так вот как раз этим кодом я вызываю конкретную jsp и пишу ее в ... Ну эт по коду должно быть видно. А механизм в общем-то такой: 1. Страница с таблицей и ее строкой фильтрации рисуется после вызова конкретного Action 2. Этот Action ложит в сессию объект, который представляет фильтр. 3. Страница со строкой фильтрации выбирает из сессионнго объекта-фильтра значения фильтров. 4. Я ее получаю в виде строки и передаю дальше по цепочке тому, кто рисует саму таблицу. Вся загвоздка в том (как для тебя), как работает вот этот самый Include.include Ну собственно вот посмотри его исходники http://kickjava.com/src/com/opensymphony/webwork/components/Include.java.htm А вось да что-то для себя найдешь... |
| Автор: bavar 19.6.2009, 11:40 |
| MisterCleric, спасибо за ответ. Посмотрел я исходники этого метода Include.include.... Вообщем идея таже самая что и привел я. Видимо других решений нету. Может у кого нить есть другие предложения? |
| Автор: tux 19.6.2009, 12:27 |
Есть два варианта попроще (как мне кажется).
|
| Автор: MisterCleric 19.6.2009, 12:31 | ||
по-моему я такое решение как раз и привел. Достаточно всего лишь взять кусок кода из фреймворка и юзать... В моем случае еще такая ситуация, что шарится между основной страницей и той, которую я вставляю, OJNLValueStack и с помощью какстом-тэгов я могу брать от туда свойства, которые положил Action |
| Автор: tux 19.6.2009, 14:51 |
А, ну наверное. Я не смотрел в код WebWork. ;) |
| Автор: bavar 23.6.2009, 11:58 |
| Всем спасибо за участие. Остановлюсь на том решении которое приводил в самом начале. |