我有一个从 Eclipse Ganymede 通过 Tomcat 6 部署的 JSF 应用程序。后者建议使用 JSP 2.0。我正在使用 Sun RI JSF 实现和 RichFaces 3.3.2SR1。
我的 index.jsp 文件应浏览器的请求导致控制台出现此错误:
05-Mar-2010 12:04:41 org.apache.catalina.core.ApplicationDispatcher invoke
SEVERE: Servlet.service() for servlet jsp threw exception
org.apache.jasper.JasperException: /index.jsp(35,41) #{..} is not allowed in template text
...
好的,我已经看到了关于这个主题的各种其他帖子,包括各种 jars/taglibs/syntaxes 版本的不兼容等。
index.jsp 调用使用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">
这应该没问题,因为 facelets 在我正在使用的 Mojarra 2.0.2FCS 中。我似乎必须使用上述语法而不是例如。<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
正如 facelets URI 导致 Eclipse 说的那样Cannot find the tag library descriptor for "http://java.sun.com/jsf/facelets"
。
我的问题与我列出这些标签的方式有关吗?
我的 Ant 构建文件引用了这些 Tomcat jar:
<fileset dir="${cliTomcatlib}">
<include name="servlet-api.jar" />
<include name="jsp-api.jar" />
</fileset>
所以我很难过如何解决这个错误。感觉这将是一个简单的修复,但是当我使用应该与 JSP 2.0 兼容的最新 jar 时,我想知道为什么会出现这个错误。JSF
编辑
响应 BalusC 的智慧,我更正了对外部 jsp 文件的两个引用,并将 all 重命名.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 上的控制台缓冲区。如果有人以前看过这个,我会感激不尽。
标记