1

我正在尝试使用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

谢谢

4

3 回答 3

2

试试这些..这些是我曾经为我自己的问题指定的..

  1. 您不需要甚至不应该包含 JSF jars。这些已经是 Java EE 的一部分。
  2. 其次,您绝对不需要也绝对不应该将单独的 Facelets jar 与 JSF 2.x 结合使用。Facelets 已经是 JSF 2.x 的一部分。
  3. 您也不应该包含 JSTL jar。Java EE 也提供了一个。如果你有 Apache commons 的 commons jars,那么这些都很好,但 JSF 不需要它们。仅当您想在应用程序代码中直接使用它们时才包含它们。
  4. 尝试获取最新的 JSF (mojara 2.x)。

您也可以像这样修改您的 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 jars。它起作用了,显示了所有的 jsf 标签。还要确保您的 xhtml 页面中有所有必需的标记库,即:

<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">

看看这是否有效。

于 2013-02-11T09:03:47.510 回答
0

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

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

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

于 2014-03-01T10:28:49.690 回答
0

我也有这个问题,因为这个问题是关于 JSF 不解析 xhtml 文件的谷歌查询的第一个结果,这是我为解决的问题所做的:

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

希望这有帮助!

于 2017-06-13T19:47:58.753 回答