Расширение .jsf
- это то, где FacesServlet
находится в период JSF 1.2, часто отображаемый в web.xml
.
<servlet-mapping>
<servlet-name>facesServlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
Расширение .xhtml
имеет файл фактический Facelets, который вы физически поместили в веб-контент вашего веб-приложения, например Webapp/WebContent/page.xhtml
.
Если вы вызываете эту страницу с расширением .jsf
, например, http://localhost:8080/webapp/page.jsf
, тогда будет вызываться FacesServlet
, найдите файл page.xhtml
и выполните синтаксический анализ / визуализацию его компонентов JSF.Если FacesServlet
не вызывается, тогда конечный пользователь получит необработанный исходный код XHTML (который можно увидеть, нажав правую кнопку мыши, Просмотреть исходный код ).
Иногда *.faces
расширение или /faces/*
папок используется.Но это было в далёком возрасте JSF 1.0 / 1.1.Вы можете выбирать и использовать любое отображение, которое хотите, чтобы FacesServlet
слушал, даже если это ничего не говорит *.xyz
.Сама настоящая страница всегда должна иметь расширение .xhtml
, но это настраивается следующим <context-param>
в web.xml
:
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xml</param-value>
</context-param>
Это изменит FacesServlet
для определения page.xml
instadиз (по умолчанию) page.xhtml
.
В последнее время с JSF / Facelets 2.0 использовалось отображение *.xhtml
.В JSF / Facelets 1.x было невозможно использовать то же расширение сопоставления, что и физический файл.Это привело бы к бесконечному циклу.Но начиная с JSF / Facelets 2.0 это возможно, и это позволяет вам вызывать страницу по http://localhost:8080/webapp/page.xhtml
.
<servlet-mapping>
<servlet-name>facesServlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
Таким образом, вам не нужно настраивать некоторые ограничения безопасности, чтобы скрывать необработанные исходные файлы для случаев, когда конечный пользователь меняет, например, .jsf
в URL на .xhtml
в адресной строке браузера.Только инструментальные средства (IDE и плагины) и учебные ресурсы по-прежнему нуждаются в том, чтобы наверстать упущенное изменение с *.jsf
на *.xhtml
.Согласно JSF 2.3, FacesServlet
по умолчанию будет автоматически регистрироваться также на *.xhtml
(рядом с /faces/*
, *.faces
и *.jsf
).Это перенесено в Mojarra 2.2.11.
См. Также: