Faces Servlet没有在jsf中解析.xhtml页面2.在tomcat 7上运行

时间:2013-02-11 06:17:05

标签: jsf-2 tomcat7

我正在尝试使用tomcat7在eclipse中创建一个JSF 2.0应用程序。该项目正在成功运行,但jsf html和核心组件未在浏览器中呈现。我认为我已经在web.xml中配置了Faces Servlet。

以下是web.xml文件 -

<welcome-file-list>
<welcome-file>faces/index.xhtml</welcome-file>    
</welcome-file-list>

<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>/faces/*</url-pattern>    
</servlet-mapping>  

<context-param>
    <description>State saving method: 'client' or 'server' (=default)</description>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>client</param-value>
</context-param>
<context-param>
    <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
    <param-value>resources.application</param-value>
 </context-param>
 <listener>
    <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
 </listener>

我在WEB-INF之外有我的index.xhtml页面。它在浏览器中显示但jsf组件在浏览器中看不到。任何人都可以告诉我出了什么问题。

我在WEB-INF / lib中包含了以下jar文件 - 1. commons-annotations.jar 2. commons-beansutil.jar 3. commons-collection.jar 4. commons-digester.jar 5. commons-logging.jar 6. jsf-api.jar(来自mojra 2.0) 7. jsf-impl.jar(来自mojra 2.0) 8. jstl.jar 9. standard.jar

由于

3 个答案:

答案 0 :(得分:2)

尝试这些..这些是我自己的问题指定给我一次..

  1. 您不需要甚至不应该包含JSF jar。这些已经是Java EE的一部分。
  2. 其次,你绝对不需要,绝对不应该将单独的Facelets jar与JSF 2.x结合使用。 Facelets已经是JSF 2.x的一部分。
  3. 您也不应该包含JSTL jar。那个也是由Java EE提供的。如果你有Apache公共的公共罐子,那么这些都很好,但JSF不需要它们。仅在您希望在应用程序代码中直接使用它们时才包括它们。
  4. 尝试获取最新的JSF(mojara 2.x)。
  5. 您也可以像这样修改web.xml并尝试:

     <welcome-file-list>
     <welcome-file>index.xhtml</welcome-file>    
     </welcome-file-list> 
    
    
     <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>*.xhtml</url-pattern>    
     </servlet-mapping>    
    

    当我尝试时,我分别删除了添加jsf jar。它工作,显示所有的jsf标签。还要确保在xhtml页面中包含所有必需的taglib,即:

    <html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui"
    xmlns:f="http://java.sun.com/jsf/core">
    

    看看是否有效。

答案 1 :(得分:0)

请将原始问题中显示的servlet映射更改为

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

使其工作,即通过JSF2呈现您的内容(已经由Tomcat愉快地提供)。

答案 2 :(得分:0)

我也有这个问题,因为这个问题是关于JSF没有解析xhtml文件的google查询的第一个结果,这就是我要解决的问题:

在我的情况下,我依赖于weld-servlet,版本2.2.1,当我从类路径中删除它时,JSF开始渲染。

希望这有帮助!