Иногда я вижу URL-адрес JSF *.jsf, иногда *.xhtml, а иногда /face /*. Зачем?

Я пытался изучить JSF, и иногда я вижу URL *.jsf а иногда *.xhtml или же /faces/*, Может кто-нибудь заполнить мои знания, пожалуйста? Когда я создаю JSF с помощью Facelet, расширение файла .xhtmlтак где же .jsf Расширение URL взято?

1 ответ

Решение

.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 (что можно увидеть, щелкнув правой кнопкой мыши, View Source).

Иногда *.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 of (по умолчанию) 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). Это перенесено на Мохарру 2.2.11.

Смотрите также:

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