URL-адреса с расширением.jsf по-прежнему перенаправляются в.xhtml после удаления FacesServlet из web.xml

У меня есть веб-приложение, которое изначально было приложением JSF, но было переведено на чистый HTML/JavaScript. Сейчас мы находимся в процессе полной ликвидации JSF.

У нас был физический файл 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.

1 ответ

Решение

При использовании JSF 2.0+ в контейнере Servlet 3.0+, и нет явного FacesServlet регистрация в собственном веб-приложении web.xmlтогда FacesServlet будет при запуске веб-приложения автоматически регистрироваться на шаблонах 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 каталог банки в пути к классам приложения.

  • 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, Это заменит автоматически зарегистрированные шаблоны URL по умолчанию.

Другие вопросы по тегам