![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| bavar |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 4.12.2005 Репутация: нет Всего: нет |
Всем доброго дня. У меня есть довольно занятная проблема, надеюсь вы поможете мне с ней разобраться ))
Есть следующая ситуация: 1. сервлет контейнер (Tomcat 5.5) получает AJAX запрос от клиента 2. сервлет обрабатывает запрос и формирует необходимые данные 3. Далее необходимо обернуть собранные данные в HTML при помощи JSP 4. Полученный фрагмент HTML кода и вернуть клиенту в виде JSON. Вся загвоздка состоит в пункте 3 ((( Каким образом запустить обработку jsp страницы так, чтобы в результате управление вернулось обратно в сервлет и я смог получить сгенерированный HTML в виде строки???? Я нашел следующий метод, но мне он кажется какимто "костыльным". Думается что есть более верный вариант. Мой вариант: создать mock для объекта HttpServletResponse и сделать форвард на требуемую jsp страницу, а потом из mock'a получить HTML. Вот как это выглядит в коде:
|
|||
|
||||
| garbuz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 8 Всего: 11 |
||||
|
||||
| tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 74 Всего: 132 |
bavar, обязательно нужен JSP? Шаблонные движки типа Velocity или Freemarker не подойдут? Я не говорю, что JSP невозможно, но шаблонным движком все было бы проще.
|
|||
|
||||
| bavar |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 4.12.2005 Репутация: нет Всего: нет |
garbuz, попробую описать более детально.
Изначально цель стоит такая: в web приложении где используется много AJAX, необходимо по запросу пользователя модифицировать несколько блоков сайта, т.е. к примеру пользователь добавил новую запись и необходимо полностью перестроить облако меток/тегов (это грубый пример, но для понимания сути вполне подойдет )) ). Поэтому хочется на сервере получить из базы эти метки/теги и обернуть их в HTML: <ul><li>tag1</li> <li>tag2</li></ul> (Простой пример). Для генерации HTML используется JSP. Затем, неизвестным мне способом, получить в сервлете это HTML как строку, прибавить к нему еще несколько кусков HTML'я для других частей сайта и еще какиенить данные, обернуть все это дело в JSON и оптравить все это клиенту - и пусть дальше Javascript разбирается со всем этим )) Надеюсь теперь более понятно объяснил. tux, к сожалению уже очень много кода написано на JSP и отказать от него не имею возможности, но обяхательно почитаю про эти фреймворки. |
|||
|
||||
| MisterCleric |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 33 Всего: 38 |
С вашего позволения я тоже вмешаюсь в вашу дискуссию.
Я в своем проекте использую MVC-framework WebWork. а также для рисования всяких отчетных табличек с сортировкой и пейджинированием использую DisplayTag. Так вот была такая задача, что заказчик заказал еще кроме сортировки и пейджинга прикрутить к таким табличкам фильтрацию в виде отдельной строки в самой таблице. Собственно вставку строки я делаю таким способом:
В определенном классе-декораторе, который я указал DisplayTag в конкретной таблице. Так вот как раз этим кодом я вызываю конкретную jsp и пишу ее в ... Ну эт по коду должно быть видно. А механизм в общем-то такой: 1. Страница с таблицей и ее строкой фильтрации рисуется после вызова конкретного Action 2. Этот Action ложит в сессию объект, который представляет фильтр. 3. Страница со строкой фильтрации выбирает из сессионнго объекта-фильтра значения фильтров. 4. Я ее получаю в виде строки и передаю дальше по цепочке тому, кто рисует саму таблицу. Вся загвоздка в том (как для тебя), как работает вот этот самый Include.include Ну собственно вот посмотри его исходники http://kickjava.com/src/com/opensymphony/w...nclude.java.htm А вось да что-то для себя найдешь... -------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
|||
|
||||
| bavar |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 4.12.2005 Репутация: нет Всего: нет |
MisterCleric, спасибо за ответ.
Посмотрел я исходники этого метода Include.include.... Вообщем идея таже самая что и привел я. Видимо других решений нету. Может у кого нить есть другие предложения? |
|||
|
||||
| tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 74 Всего: 132 |
Есть два варианта попроще (как мне кажется).
|
|||
|
||||
| MisterCleric |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 33 Всего: 38 |
по-моему я такое решение как раз и привел. Достаточно всего лишь взять кусок кода из фреймворка и юзать... В моем случае еще такая ситуация, что шарится между основной страницей и той, которую я вставляю, OJNLValueStack и с помощью какстом-тэгов я могу брать от туда свойства, которые положил Action -------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
|||
|
||||
| tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 74 Всего: 132 |
||||
|
||||
| bavar |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 4.12.2005 Репутация: нет Всего: нет |
Всем спасибо за участие. Остановлюсь на том решении которое приводил в самом начале.
|
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |