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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ресурсы и PhaseListener, jsf 
:(
    Опции темы
bingo
Дата 13.2.2007, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 2.12.2006
Где: Minsk, Belarus

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



Задача заключается в том, чтобы достать ресурсы из "скрытых мест". Например, надо взять картинку из WEB-INF'а ну и отобразить на странице.
Нашел статью Loading Resources with a PhaseListener. Вроде как изящное решение. Вкратце, смысл заключается в извлечении и возврате ресурса после фазы "Restore View" по определенному запросу, ну для примера:
Код

<img src=".resource?name=example.jpg" />

Только вот проблемка, в коде написано такое:
Код

public void afterPhase(PhaseEvent event) {
    FacesContext facesContext = event.getFacesContext();        
    String viewRootId = facesContext.getViewRoot().getViewId();

    if (viewRootId.indexOf(RESOURCE_LOADER_VIEW_ID) != -1) {
       serveResource(facesContext);
    }
  }

Но только viewRootId у меня в результате получается = ".jsp" при любом раскладе.
С чем это связано? (извиняюсь за глупую формулировку, но пока еще не разбирался с viewRoot'ом как таковым =)
Пока (определение запроса на ресурс) сделал "в лоб", т.е. достаю request, получаю путь и строку запроса и т.д. Но изящество, как мне кажется, теряется =).

ps: использую myfaces 1.1.4.
PM   Вверх
alexsmirnov
Дата 17.2.2007, 01:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 23.8.2005

Репутация: 5
Всего: 7



Jsf преобразуют url в viewId в соответствии с настройкой mapping FacesServlet - если вида *.faces , то суффикс в соответствии с параметром DEFAULT_SUFFIX , если вида /faces/* - выкидывается префикс. Соответственно , в примере и анализируется наличие RESOURCE_LOADER где-нибудь в строке. Где он будет, зарание не известно :-)
Вообще, у данного примера куча недостатков :
- лучше анализировать не после фазы, а ДО. Лишняя операция, и может пройти запрос к восстановлении сессии. Если не нужен доступ к сессионным параметрам для динамической генерации, только лишняя нагрузка на сервер.
- URL с "?" обычно отключают кеширование - опять лишние запросы и нагрузка.
- в любом случае , создается FacesContext и происходит работа многих механизмов JSF
- если захочется приложение как портлет запустить - не выйдет.
Данный способ хорош для динамической генерации , если нужен доступ к информации JSF ( нарисовать график из данных в бине ). Если вопрос только в доступе к WEB-INF/classpath - лучше свой сервлет сделать.
PM MAIL   Вверх
bingo
Дата 17.2.2007, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 2.12.2006
Где: Minsk, Belarus

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



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

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

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


 




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


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

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