一尘不染

在JSF2 Project中混合JSP和XHTML(Facelets)-可能吗?

jsp

我有一个想要使用JSF2的客户端,他们喜欢XHTML现在是默认的(Facelets)。

但是,他们的JSF1.x代码库中有大量的“遗留” JSP。

我知道这可能不是很理想,但是否有可能在JSF2中同时支持这两者,至少在移植期间的过渡期内?

我知道可以在JSF1.x中将两者混合使用,但是我在JSF2中找不到关于此的任何信息。

我努力地搜索过,但自然而然,所有JSF2的关注点都集中在Facelets上。同样,我短暂的混合尝试(我不是JSF专家!)也导致了失败。


阅读 292

收藏
2020-06-08

共1个答案

一尘不染

Facelets常见问题解答中对此进行了回答:在上使用前缀映射FacesServlet。然后,您可以访问JSP页面http://example.com/faces/page.jsp通过和Facelets页http://example.com/faces/page.xhtml。这里是相关的:

##
如何在同一应用程序中使用Facelets和JSP?

您必须为Facelets页面使用前缀映射,才能使其工作。DEFAULT_SUFFIX将JSF的默认值保留为.jsp。配置Facelet的VIEW_MAPPINGS参数:

     <web-app>
         <context-param>
             <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
             <param-value>.jsp</param-value>
         </context-param>

         <!-- Facelets pages will use the .xhtml extension -->
         <context-param>
             <param-name>facelets.VIEW_MAPPINGS</param-name>
             <param-value>*.xhtml</param-value>
         </context-param>  

         <servlet>
             <servlet-name>Faces Servlet</servlet-name>
             <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
         </servlet>

         <!-- Use prefix mapping for Facelets pages, e.g.
 http://localhost:8080/webapp/faces/mypage.xhtml -->
         <servlet-mapping>
             <servlet-name>Faces Servlet</servlet-name>
             <url-pattern>/faces/*</url-pattern>
         </servlet-mapping>
     </web-app>

2020-06-08