当前位置: 首页 > 知识库问答 >
问题:

Faces Servlet不解析。jsf 2中的xhtml页面。在tomcat 7上运行

宋弘壮
2023-03-14

我正在尝试用tomcat7在eclipse中创建一个JSF2.0应用程序。该项目正在成功运行,但jsfhtml和核心组件没有在浏览器中呈现。我想我已经在web.xml中配置了FacesServlet。

以下是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>

我的index.xhtml页面在WEB-INF之外。它显示在浏览器中,但是在浏览器中看不到jsf组件。谁能告诉我哪里出了问题?

我在WEB-INF/lib - 1中包含了以下jar。commons-annotations.jar 2。jar 3。jar 4。jar 5。jar 6。jsf-api.jar(来自mojra 2.0) 7。jsf-impl.jar(来自mojra 2.0) 8。jstl.jar 9。标准罐

谢谢。

共有3个答案

金晗日
2023-03-14

我也遇到了这个问题,由于这个问题是谷歌查询中关于JSF不解析xhtml文件的第一个结果,这是我为解决而做的事情:

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

希望这有帮助!

萧无尘
2023-03-14

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

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

让它工作,也就是让你的内容(已经被Tomcat很好地提供了)通过JSF2呈现。

胡霖
2023-03-14

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

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

你也可以修改你的网站。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 页面中具有所有必需的标签库,即:

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

看看这是否有效。

 类似资料:
  • 使用perl中的RDF::RDFa::解析器模块解析网站中的rdf数据。在网站上与!DOCTYPE超文本标记语言PUBLIC"-//W3C//DTD超文本标记语言4.01过渡//EN" 测试网站-

  • 我创建了一个JasperReport应用程序,它在tomcat服务器上运行良好。但是当我使用相同的jar在Jboss上运行时,它会显示错误 原因:java.lang.ClassCastException:org.apache.xerces.jaxp.DocumentBuilderFactoryImpl无法强制转换为javax.xml.parsers.DocumentBuilderFactor.ne

  • 我在eclipse中有一个使用jsf的动态web应用程序。我用“New java server faces(jsf)page(xhtml)”模板创建了一个jsp页面,希望只显示一个h:inputText,但当我在tomcat中运行应用程序时,inputText没有显示出来。 有什么问题?

  • 我相信这是与我的配置有关,但我不知道它是什么。 我正在macOS High Sierra上使用IntelliJ IDEA Ultimate 2018.1。 这是我的pom.xl 和XHTML页面: 正如我上面提到的,

  • 问题内容: 我有个问题。我想防止用户访问页面而不登录jsf2。当用户直接将受限制的页面网址写入浏览器时,他/她应该看不到该页面。就像上述情况那样,他/她必须被重定向到登录页面。如何以编程方式执行此操作? 问题答案: 这取决于您如何设置登录名。您似乎正在使用本地认证,其中将登录用户设置为会话范围的受管Bean的属性。因为使用Java EE提供的容器管理登录名,已经考虑了防止访问受限页面。 假设你已经

  • 问题内容: 我试图解析具有声明为使用过渡性dtd的doctype的HTML文档,如下所示: <!DOCTYPE html PUBLIC“-// W3C // DTD XHTML 1.0 Transitional // EN”“ http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ”> 在文档上执行Builder.build时,出现以下异常