Как установить <welcome-файл> JSF2 с отображением сервлетов лиц? - PullRequest
20 голосов
/ 06 января 2011

У меня есть простое приложение JSF2, использующее Facelets. Мой web.xml настроен следующим образом: -

<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping> 

Я хочу установить для приложения значение по умолчанию для страницы приветствия /pages/login.xhtml. Кажется, я не могу получить настройку файла приветствия, чтобы поднять это при переходе к контекстному корню в браузере.

Моя настройка приветствия web.xml выглядит следующим образом: -

<welcome-file-list>
<welcome-file>/pages/login.jsf</welcome-file>
</welcome-file-list>

Как заставить страницу приветствия перейти на страницу входа и убедиться, что она проходит через сервлет лица?

Если я использую следующее, отображается страница, но она не прошла через сервлет лица, и компоненты лица не отображаются: -

<welcome-file-list>
<welcome-file>pages/login.xhtml</welcome-file>
</welcome-file-list>

Любая помощь приветствуется!

Ответы [ 2 ]

23 голосов
/ 06 января 2011

Вы должны создать пустой файл login.jsf рядом с файлом login.xhtml. По какой-то причине этот хак нужен, чтобы обмануть контейнер сервлетов, заставив их думать, что ваш файл приветствия существует.

Примечание. Обслуживаемым ответом по-прежнему будет ответ JSF с использованием вашего файла login.xhtml, а не пустого файла login.jsf, который вы создаете.

1 голос
/ 18 июня 2011

Дополнительная информация к исходному решению.

Это всего лишь необходимость обратной совместимости для контейнеров сервлетов до версии 3. Например, после запуска под Glassfish 3.1 или Tomcat 7 больше не требуется иметьпустой файл, как это.Я запускал тесты для проверки с использованием Tomcat 6 и Tomcat 7. В прошлом я проводил тесты со Glassfish и предполагал, что проблема с Tomcat 6 находится в процессе разработки, поскольку в настоящее время мы запускаем наше программное обеспечение в Tomcat 6, а оно не является контейнером сервлетов 3.0.Я использовал JSP-страницу с перенаправлением, но после полного перехода к фейслетам мне не понравилось, что она осталась за JSP-страницей.Это отличное решение на ближайшую перспективу, пока мы не запустим контейнер с сервлетами 3.0.Настоящая причина, по которой он работает, заключается в том, что все, что делается с записью WEB.XML, - это проверка существования файла.Настоящая работа обрабатывается JSF, так как он перехватывает запрос к странице лиц, таким образом, он никогда нигде не попадает на эту пустую страницу.

...