已经尝试了解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.

参见:

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top