Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как совместить сервлеты, классы и JSTL/EL 
V
    Опции темы
Dims
Дата 19.2.2009, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: 1
Всего: 11



Проконсультируйте, плиз, правильно ли я делаю.

Мне нужно прикрепить к серверу Томкат программу/библиотеку, которая, в принципе, на сервер не рассчитана. Кроме того, я хочу использовать JSTL/EL.

У меня есть класс ServerTalkApplication implements ServletContextListener, его я описал в web.xml, чтобы он у меня грузился вместе с моим приложением.

Внутри contextInitialized я сделал инициализацию моего приложения, базы данных и т.п. Кроме того, я в коде этого метода добавил строку

Код

servletContext.setAttribute("application", this);


по моим представлениям, это должно сделать доступной переменную ${application} через JSTL/EL.

В классе ServerTalkApplication есть метод

Код

public Conversation getNewConversation()


поскольку он удовлетворяет соглашению бинов, я думаю, что это позволит вызывать его с помощью

Код

<c:set var="conversation" value="${application.newConversation}"/>


В классе Conversation есть метод

Код

public void setQuestion(String question)


что, как мне кажется, даёт мне право присваивать к нему значение вот так

Код

<c:set target="conversation" property="question" value="${param.question}"/>


Далее. Класс Conversation у меня implements Iterable<Replica>, что, как я думаю, позволяет мне использовать его вот так

Код

<c:forEach items="conversation" var="replica">
                                    <p><c:out value="{$replica}"/></p>
                                </c:forEach>


причём средняя строка должна работать потому (я думаю), что класс Replica содержит метод toString().

Но почему-то это всё не работает. Причём, из-за странного поведения отладчика, я не могу понять, в чём тут дело. 

Подскажите, что неправильно в моих рассуждениях?

В какой книжке можно про это сопряжение почитать? А то обычно в книжках про JSTL всё описывает так, словно JSTL может работать само по себе. Ведь кто-то же должен все эти бины писать!

Добавлено через 2 минуты и 16 секунд
Тьфу, пардон, надо тему в J2EE перенести...
PM MAIL   Вверх
Dims
Дата 19.2.2009, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: 1
Всего: 11



В общем, заработало. Код JSTL такой:

Код

<c:set var="conversation" value="${application.newConversation}"/>
<c:set target="${conversation}" property="question" value="${param.question}"/>
<c:forEach items="${conversation.replicas}" var="replica">
   <p><c:out value="${replica}" escapeXml="false"/></p>
</c:forEach>


Моя ошибка была (за исключением текстуальных) только в том, что, оказывается, Iterable недостаточно для использования в теге <c:forEach>, нужна обязательно полноценная коллекция (хотя это нелогично).


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java tools & IDE's | Следующая тема »


 




[ Время генерации скрипта: 0.1631 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.