У меня есть приложение JSF, развертываемое из Eclipse Ganymede через Tomcat 6. Последний предлагает 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
...
ОК, я видел другие посты на эту тему, включая несовместимости версий различных jar / taglibs / синтаксисов и т. Д.
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"%>
поскольку URI-адрес facelets заставляет Eclipse сказать Cannot find the tag library descriptor for "http://java.sun.com/jsf/facelets"
.
Моя проблема связана с тем, как я перечисляю эти теги?
Мой файл сборки Ant ссылается на следующие файлы Tomcat:
<fileset dir="${cliTomcatlib}">
<include name="servlet-api.jar" />
<include name="jsp-api.jar" />
</fileset>
поэтому я озадачен тем, как обойти эту ошибку. Такое ощущение, что это было бы простым исправлением, но, поскольку я использую последние jar-файлы, которые должны быть совместимы с JSP 2.0, мне интересно, почему я получаю эту ошибку. JSF
EDIT
В ответ на мудрость 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. Я был бы переполнен благодарностью, если бы кто-нибудь видел это раньше.
Mark