2015-09-15 38 views
2

У меня есть веб-приложение, которое первоначально было JSF-приложением, но было перенесено на чистый HTML/JavaScript. Сейчас мы находимся в процессе полного устранения JSF.URL-адреса с расширением .jsf все еще перенаправляются на .xhtml после удаления FacesServlet из web.xml

У нас был физический файл main.xhtml, который был запрошен «main.jsf», где FacesServlet был объявлен в web.xml с url-mapping * .jsf.

Мы переместили содержимое в main.html и поместили метатег REFRESH в main.xhtml для перенаправления на main.html.

Теперь проблема заключается в том, что даже если я удалю FacesServlet из web.xml, он по-прежнему перенаправляет запрос main.jsf на main.xhtml. Если я переименую файл main.xhtml в main.jsf, запрос main.jsf даст 404, а в журнале сервера указано, что он не может найти файл «main.jsp».

Теперь возникает вопрос: если он перенаправляет * .jsf в * .jsp или * .xhtml, даже если в web.xml отсутствует FacesServlet, что несет ответственность за эти перенаправления?

Я использую GlassFish 3.1.2.2.

ответ

2

При использовании JSF 2.0+ на Servlet 3.0+ контейнера, и нет никакого явного FacesServlet регистрации в веб-приложение собственного web.xml, то FacesServlet будет при запуске WebAPP автоматически регистрируется на URL шаблонов /faces/*, *.faces и *.jsf.

Смотрите также свою javadoc:

Этот сервлет должен автоматически отображаться, если оно явным образом не отображается в web.xml или web-fragment.xml и один или более из следующих условий true.

  • faces-config.xml файл найден в WEB-INF

  • faces-config.xml файл находится в директории META-INF баночки в пути к классам приложения.

  • Имя файла, оканчивающегося на .faces-config.xml, находится в каталоге META-INF jar в пути к классу приложения.

  • Параметр контекста javax.faces.CONFIG_FILES указан в web.xml или web-fragment.xml.

  • Класс Set классов, переданных в onStartup() метод реализации ServletContainerInitializer не пуст.

Если среда выполнения определяет, что сервлет должен автоматически отображаться, он должен быть отображен в следующих <url-pattern> записей.

  • /faces
  • *.jsf
  • *.faces

JSF 2.3 добавит *.xhtml URL-шаблон к набору (который портированном в Mojarra 2.2.11).

Если вы хотите, чтобы остановить это поведение, и вы не можете устранить триггеры (например, все еще имея faces-config.xml), то вам лучше явным образом регистрировать FacesServlet на *.xhtml в собственном web.xml WebAPP в. Это приведет к переопределению автозарегистрированных шаблонов URL по умолчанию.

+0

Спасибо за разъяснение. Помечено как принято. – thomjah