Организация файлов .xhtml в подпапках

У меня есть проект JSF 2.0 с большим количеством файлов .xhtml. Из-за фильтра безопасности я хочу поместить некоторые файлы в папку /secure, чтобы затем применить фильтр.

Я попытался просто переместить файлы в папку. Но тогда я получаю исключение

«/selectRole.xhtml не найден в ExternalContext как ресурс»

Нужно ли что-то добавлять в face-config или web.xml?


person Stefan Rasmusson    schedule 09.08.2010    source источник
comment
Какой фильтр безопасности вы используете? В случае весенней безопасности вы также должны проверить application-context.xml.   -  person Maxim Manco    schedule 09.08.2010
comment
Я создал свой собственный фильтр, и я делаю перенаправление res.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY); res.setHeader(Расположение, baseURI + selectRolej.xhtml +); res.flushBuffer();   -  person Stefan Rasmusson    schedule 10.08.2010


Ответы (1)


Ваше приложение пытается прочитать /selectRole.xhtml из компонента или перенаправить действие.

В JSF2 правила навигации записываются в бинах. Возвращаемая строка метода может возвращать расположение файла относительно папки WebContent.

РЕДАКТИРОВАНИЕ: обратите внимание, что он может появиться и в файле faces-config.xml, хотя это не рекомендуется.

Посмотрите, где вы его объявили (обычно в файле bean-компонента, который перенаправляет на него) и измените его, чтобы он возвращал "/secure/selectRole"

Например:

Public class myBean{
  public String save(){
    return "/secure/selectRole";
   }
}

Еще одно место, которое я могу придумать, находится в другом файле .xhtml, где в h:link вы ссылаетесь на эту страницу.

person Dejell    schedule 09.08.2010
comment
Спасибо за ответ. Хитрость в том, что я еще ничего не вызывал в бине. Первое, что происходит, это то, что я перенаправляю запрос на страницу xhtml в фильтре сервлетов. Я изменил там URL. Что загружает внешний контекст. Кажется, что нужно пропустить загрузку подпапки. - person Stefan Rasmusson; 10.08.2010