gpt4 book ai didi

jsf - 有时我看到 JSF URL 是 *.jsf,有时是 *.xhtml,有时是/faces/*。为什么?

转载 作者:行者123 更新时间:2023-12-03 05:47:52 24 4
gpt4 key购买 nike

一直在尝试学习JSF,有时我看到URL是*.jsf,有时是*.xhtml/faces/*。有人可以补充我的知识吗?当我使用 Facelet 创建 JSF 时,文件扩展名是 .xhtml,那么 .jsf URL 扩展名来自哪里?

最佳答案

.jsf扩展名是 FacesServlet在 JSF 1.2 期间,经常映射在 web.xml 中.

<servlet-mapping>
<servlet-name>facesServlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>

.xhtml扩展名是您实际放置在 Web 应用程序的 Web 内容中的实际 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代替(默认)page.xhtml .

最近,JSF/Facelets 2.0 a *.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 和插件)和学习资源仍然需要 catch *.jsf 所提倡的举措。至*.xhtml 。根据 JSF 2.3,FacesServlet默认情况下将在 *.xhtml 上自动注册也是(在 /faces/**.faces*.jsf 旁边)。这已向后移植到 Mojarra 2.2.11。

另请参阅:

关于jsf - 有时我看到 JSF URL 是 *.jsf,有时是 *.xhtml,有时是/faces/*。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3008395/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com