在JSP / Servlet Java EE应用程序中引入JSF 1.2

时间:2011-12-15 06:15:12

标签: jsp jsf

我的环境是RAD 8,WAS 7.0.x,包含许多JSP和Servlet。 该应用程序还使用JAX-RPC和JAX-WS 我想介绍JSF并开始迁移一些更简单的JSP。

我有一个很大的问题,我无法立即迁移到JSF 2.0,因为我的目标是WAS 7.x而且我发现它不支持JSF 2.0。 我与其他商业团体分享WAS 7.x. 所以我现在必须使用JSF 1.2 ..

在RAD 8中,我尝试了以下内容:

从testJSF.jsp文件中,我使用c:redirect到/faces/test1.jsp。 我也试过jsp:转发到/faces/test1.jsp。 Servlet映射具有/ faces / *和* .jsp的url-pattern条目 这次是WAS 7,给了我/test1.jsp没找到...

然后我尝试从testJSF.jsp文件中使用c:redirect到/faces/test1.jsf 我也试过jsp:转发到/faces/test1.jsf。 这次我还改变了Servlet-mapping与/ faces / *和* .jsf的url-pattern条目 这次WAS 7进入无限循环,堆栈溢出。

在这些环境下,servlet-mapping应该是url-pattern,我应该如何引用新的JSF 1.2页面?

2 个答案:

答案 0 :(得分:0)

你应该没关系JSF 2.0,因为Websphere 7.0实现了Servlet 2.5规范(据我所见)。

/ faces / *或* .jsf映射应该没问题,其他地方可能存在配置问题......您需要提供更多详细信息。

为什么需要.jsp来测试JSF页面?如果直接从浏览器打开页面会发生什么?

答案 1 :(得分:0)

  

Servlet-mapping具有/ faces / .jsp

的url-pattern条目

您不应为*.jsp指定FacesServlet映射。此模式保留给servlet容器的内置JspServlet。这样,FacesServlet永远无法获得正确的JSP文件来呈现视图。


  

使用/ faces / .jsf的url-pattern条目进行Servlet映射这次WAS 7进入无限循环,堆栈溢出。

您不应该为实际视图文件提供.jsf扩展名,而是.jsp扩展名。


正确的设置如下:

  • 单独FacesServlet上映射*.jsf

    <servlet>
        <servlet-name>facesServlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>facesServlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>
    

    您也可以使用/faces/*或添加它,但这更加丑陋,并且不允许轻松迁移到JSF 2.0。所以不要管它。

  • 视图文件应具有.jsp扩展名。

    viewid.jsp

    <%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
    <%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
    <!DOCTYPE html>
    <f:view>
        <html lang="en">
            <head>
                <title>JSF 1.2 test page</title>
            </head>
            <body>
                <h:outputText value="If you see this, JSF works!" />
            </body>
        </html>
    </f:view>
    
  • 不要使用<c:redirect><jsp:forward>,这没有任何意义。只需通过网址直接调用该页面:

      

    http://localhost:8080/contextname/viewid.jsf

    请注意网址中的.jsf扩展名。这会调用FacesServlet。然后它会找到viewid.jsp文件并显示它。

另见:

相关问题