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 по умолчанию.