JSF没有被渲染

时间:2011-02-01 18:41:48

标签: jsp jsf tomcat java-ee

我有一个带有 index.jsp 的小型webapp转发(它主要只包含):

<jsp:forward page="/pages/inputname.jsf" />

web.xml 包含(除了您期望的所有其他内容;请参阅下文):

<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
</servlet-mapping>

inputname.jsp 未呈现(这是URI):

http://localhost:8080/simpleWeb/index.jsp

页面因此出现在浏览器中(标签,输入编辑字段,按钮):

#{msg.prompt} #{personBean.personName} #{msg.button_text}

我猜这是因为它没有通过Faces servlet。但是,我不确定如何强行通过。 (请注意,我在其他地方,使用RichFaces和MyFaces,也遇到与 .xhtml 文件类似的问题,但我想首先解决这个更简单的案例。)

本教程让我在WEB-INF / lib /:

中使用这些库(通过Maven)
avalon-framework-4.1.3.jar
commons-beanutils-1.7.0.jar
commons-collections-3.2.jar
commons-digester-1.8.jar
commons-logging-1.1.jar
jsf-api-1.2_02.jar
jsf-impl-1.2-b19.jar
jstl-1.1.2.jar
log4j-1.2.12.jar
logkit-1.0.1.jar
servlet-api-2.3.jar
standard-1.1.2.jar

非常感谢任何帮助。

web.xml (是的,它有DOCTYPE web-app标题):

<web-app>
    <display-name>Archetype Created Web Application</display-name>

    <context-param>
        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
        <param-value>server</param-value>
    </context-param>
    <context-param>
        <param-name>javax.faces.CONFIG_FILES</param-name>
        <param-value>/WEB-INF/faces-config.xml</param-value>
    </context-param>

    <listener>
        <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
    </listener>

    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>
</web-app>

2 个答案:

答案 0 :(得分:2)

两种解决方案:

  1. 浏览器需要将index.jsp称为index.jsf
  2. index.jsp应该启动重定向而不是转发。 JSTL <c:redirect>可能有用。
  3. 无论如何,这样的index.jsp是毫无意义的。只需在/pages/inputname.jsf中添加<welcome-file> web.xml,然后在真实 {{1}旁边提供空白 /pages/inputname.jsf文件愚弄文件存在的服务器(否则它将变为404)。

    至于/pages/inputname.jspweb.xml不属于那里。它是Servlet 2.3方法的一个古老遗留物(之前已有近十年历史)。在Servlet 2.4和更新版本中,有XSD。更重要的是,由于您使用的是JSF 1.2,DOCTYPE应该被声明为至少 Servlet 2.4,最好是更高,这是您的容器可以支持的最高值,这样您就可以使用最新的可用的API设施。 Tomcat 5.5是Servlet 2.4,Tomcat 6.0是Servlet 2.5,Tomcat 7.0是Servlet 3.0。

    另见:

答案 1 :(得分:0)

我有类似的东西,这是用于重定向的东西:

<body>
    <%
        response.sendRedirect("index.jsf");
    %>
</body>

尝试将“/index.jsp”放入浏览器会带您进入“/index.jsf”。