Tomcat 6 JSF/JSP文件名配置问题

Tomcat 6 JSF/JSP文件名配置问题,jsp,jsf,tomcat6,Jsp,Jsf,Tomcat6,我已经从EclipseGanymede通过Tomcat6部署了一个JSF应用程序。后者建议使用jsp2.0。我正在使用Sun RI JSF实现和RichFaces 3.3.2SR1 浏览器请求我的index.jsp文件会导致控制台出现以下错误: 05-Mar-2010 12:04:41 org.apache.catalina.core.ApplicationDispatcher调用 严重:Servlet jsp的Servlet.service()引发异常 模板文本中不允许org.apache.j

我已经从EclipseGanymede通过Tomcat6部署了一个JSF应用程序。后者建议使用jsp2.0。我正在使用Sun RI JSF实现和RichFaces 3.3.2SR1

浏览器请求我的index.jsp文件会导致控制台出现以下错误:

05-Mar-2010 12:04:41 org.apache.catalina.core.ApplicationDispatcher调用
严重:Servlet jsp的Servlet.service()引发异常
模板文本中不允许org.apache.jasper.JasperException:/index.jsp(35,41)#{..}

好的,我已经看过关于这个主题的各种其他帖子,包括各种jar/taglibs/syntax版本的不兼容性等

使用
http://localhost:8989/myapp/index.jsf
(或.jsp-给出相同的错误),并包含

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:a4j="http://richfaces.org/a4j"
    xmlns:rich="http://richfaces.org/rich">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
     xmlns:ui="http://java.sun.com/jsf/facelets"
所以我很困惑,我如何才能绕过这个错误。感觉这将是一个简单的修复,但由于我使用的是最新的JAR,应该与JSP2.0兼容,我想知道为什么会出现这个错误。JSF

编辑 为了回应BalusC的智慧,我更正了对外部jsp文件的两个引用,并将所有
.jsp
重命名为
.xhtml
。我记得还更新了我的
faces config.xml

当请求
index.xhtml
时,立即重新部署错误会导致一个大的重复错误:

05-Mar-2010 13:29:26 org.apache.catalina.core.ApplicationDispatcher invoke
SEVERE: Servlet.service() for servlet Faces Servlet threw exception
java.lang.StackOverflowError
    at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:824)
    at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
    at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:544)
...
    at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
    at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:544)
    at com.sun.faces.context.ExternalContextImpl.getSession(ExternalContextImpl.java:151)
    at javax.faces.application.ViewHandler.calculateCharacterEncoding(ViewHandler.java:242)
    at javax.faces.application.ViewHandler.initView(ViewHandler.java:458)
    at com.sun.faces.application.view.MultiViewHandler.initView(MultiViewHandler.java:106)
    at org.ajax4jsf.application.ViewHandlerWrapper.initView(ViewHandlerWrapper.java:128)
    at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:109)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)
我承认这不是很有启发性,除了堆栈跟踪的前几行重复了很多次之外,我不得不在Eclipse上更改控制台缓冲区。如果有人以前见过这个,我会感激不尽


标记

将JSF impl jar添加到Tomcat的库或应用程序库中,然后重试。

有关更多信息,请参阅。

将JSF impl jar添加到Tomcat的库或应用程序库中,然后重试。
更多信息,请参阅

JSP中的模板文本中确实不允许使用统一EL。它只允许在facelet中使用

jsp使用(或.jsp-给出相同的错误)调用,并包含

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

JSP中的模板文本中确实不允许使用统一EL。它只允许在facelet中使用

jsp使用(或.jsp-给出相同的错误)调用,并包含

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

Tomcat没有附带任何JSF impl(除非OP确实不必要地将它们放在那里)。谢谢您的指点。我主要使用GlassFish和JBoss。Tomcat不附带任何JSF impl(除非OP确实不必要地将它们放在那里)。谢谢您的指点。我主要使用GlassFish和JBoss.BalusC,请参阅我的问题更新。感谢您在这方面的帮助。答案中的关键词是“咨询”、“文档”、“配置”和“正确”。感谢巴卢斯给我的耳光。巴卢斯,请参阅我的问题更新。感谢您在这方面的帮助。答案中的关键词是“咨询”、“文档”、“配置”和“正确”。谢谢巴卢斯给我一巴掌。