Иногда я вижу, что URL JSF является *.jsf, иногда *.xhtml и иногда / поверхности /*. Почему?

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

56
задан BalusC 18 April 2018 в 20:42
поделиться

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

Иногда используется расширение *. Faces или отображение папок / faces / * . Но это было еще во времена JSF 1.0 / 1.1. Вы можете выбрать и использовать любое отображение, которое вы хотите позволить FacesServlet прослушивать, даже если это ничего не говорит *. Xyz . Фактическая страница всегда должна иметь расширение .xhtml , но это можно настроить с помощью следующего в web.xml :

<context-param>
    <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
    <param-value>.xml</param-value>
</context-param>

Это изменит FacesServlet на page.xml вместо (по умолчанию) 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 ). Это backported в Mojarra 2.2.11.

См. Также:

98
ответ дан 7 November 2019 в 06:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: