有时我看JSF的URL*.jsf,有时*.xhtml和有时/脸/*.为什么?
-
26-09-2019 - |
题
已经尝试了解JSF,有时候我看到的URL *.jsf
并且有时是 *.xhtml
或 /faces/*
.有人可以填满我的知识吗?当我创建一个JSF使用Facelet,该文件是扩展 .xhtml
, 那不会 .jsf
URL扩展从何而来?
解决方案
的 .jsf
扩展是那里的 FacesServlet
是在JSF1.2期间经常映在 web.xml
.
<servlet-mapping>
<servlet-name>facesServlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
的 .xhtml
扩展是的 实际 客户端的文件作为你身体上放置在该目录的网络应用程序,例如 Webapp/WebContent/page.xhtml
.
如果你调用这个页面 .jsf
扩展,例如 http://localhost:8080/webapp/page.jsf
那么 FacesServlet
将被调用,找到的 page.xhtml
文件和分析/呈现其JSF组成。如果的 FacesServlet
不援引,然后终端用户最终会得到原XHTML源代码(其中可以看出,由右击, 鉴源).
有时一个 *.faces
扩展或 /faces/*
foldermapping是被使用。但是这是从早在JSF1.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/客户端2.0一个 *.xhtml
映射是使用。在JSF/客户端1.x这是不可能使用相同的映射的扩展作为物理文件。它将导致一个无限的循环。但是,由于JSF/客户端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
在浏览器中的地址栏。只有工具(IDEs和插件)和学习资源仍然需要迎头赶上的主张移动 *.jsf
要 *.xhtml
.为每JSF2.3, FacesServlet
会默认情况下被autoregistered上 *.xhtml
太(下来 /faces/*
, *.faces
和 *.jsf
).这是移植到Mojarra2.2.11.