【发布时间】:2011-12-07 17:32:33
【问题描述】:
我在寻找同时使用 .jsp 和 .xhtml 的方法时发现了这个Mixing JSP and XHTML (Facelets) in JSF2 Project - possible?。
这个问题通过一个 FAQ 的链接得到了回答,该链接指出我必须使用前缀映射,但我不知道如何使用。我知道我必须添加 facelets.VIEW_MAPPINGS 但我无法理解“您必须使用前缀映射”的措辞。
基本上我应该使用 /faces/ 访问我的页面,例如:“http://localhost:8080/webapp/faces/mypage.xhtml”
但如果我尝试手动添加 /faces/ ,它会变成 404。我不确定它是否应该在运行应用程序时自动添加。
我的欢迎文件是一个 html 页面,它使用:<body bgcolor="#FFFFFF" onload="window.location='/portal/login/login.xhtml'">
真的应该是 .xhtml 而不是 .jsf 吗?
在尝试与 JSP 页面混合并且只尝试 JSF2 之前,我成功地运行了它:
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
使用 /faces/* 似乎是必须的,但我只是不明白如何正确使用它。
我正在尝试这样:
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<!-- Use extensions mapping for Faces servlet -->
<context-param>
<param-name>facelets.VIEW_MAPPINGS</param-name>
<param-value>*.xhtml</param-value>
</context-param>
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.jsp</param-value>
</context-param>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
这涉及使用纯jsp 页面和使用JSF 1.2 的jsp 页面构建的大型应用程序。基本上,我将所有 jsf 页面转换为 jsf2 并因此转换为 xhtml。
【问题讨论】: