tomcat - 使用 Apache MyFaces 2.0 时出现无限循环/StackOverflowError

标签 tomcat jsf jsf-2 myfaces

我只是想使用 Tomcat 6.0 尝试一下 JSF 2.0 (MyFaces 2.0)。 我是 JSF 的新手。我只是将静态 xhtml 作为 test.jsf 放在应用程序根目录中。请求 URL 时,将始终抛出 StackOverflowError:

 java.lang.StackOverflowError
 at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.<init>(ApplicationHttpRequest.java:904)
 at org.apache.catalina.core.ApplicationHttpRequest.getAttributeNames(ApplicationHttpRequest.java:243)
 at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.<init>(ApplicationHttpRequest.java:905)
 at org.apache.catalina.core.ApplicationHttpRequest.getAttributeNames(ApplicationHttpRequest.java:243)
 at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.<init>(ApplicationHttpRequest.java:905)

(重复多次,然后:)

 at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.<init>(ApplicationHttpRequest.java:905)
 at org.apache.catalina.core.ApplicationHttpRequest.getAttributeNames(ApplicationHttpRequest.java:243)
 at org.apache.myfaces.context.servlet.RequestMap.getAttributeNames(RequestMap.java:66)
 at org.apache.myfaces.util.AbstractAttributeMap.isEmpty(AbstractAttributeMap.java:100)
 at org.apache.myfaces.renderkit.ErrorPageWriter._writeVariables(ErrorPageWriter.java:558)
 at org.apache.myfaces.renderkit.ErrorPageWriter._writeVariables(ErrorPageWriter.java:538)
 at org.apache.myfaces.renderkit.ErrorPageWriter.debugHtml(ErrorPageWriter.java:259)
 at org.apache.myfaces.renderkit.ErrorPageWriter.debugHtml(ErrorPageWriter.java:221)
 at org.apache.myfaces.renderkit.ErrorPageWriter.handleThrowable(ErrorPageWriter.java:384)
 at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:102)
 at javax.faces.webapp.FacesServlet.service(FacesServlet.java:189)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
 at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
 at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
 at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
 at org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:439)
 at org.apache.myfaces.view.jsp.JspViewDeclarationLanguage.buildView(JspViewDeclarationLanguage.java:115)
 at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:103)
 at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:207)
 at javax.faces.webapp.FacesServlet.service(FacesServlet.java:191)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
 at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
 at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
 at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
 at org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:439)
 at org.apache.myfaces.view.jsp.JspViewDeclarationLanguage.buildView(JspViewDeclarationLanguage.java:115)
 at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:103)
 at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:207)
 at javax.faces.webapp.FacesServlet.service(FacesServlet.java:191)

(也重复了很多次……)

我做错了什么?

最佳答案

HTTP servlet 请求期间的 StackOverflowError 表示 servlet/过滤器映射中的无限递归。您的 FacesServlet 是如何映射的?它应该被映射为监听 *.jsfurl-pattern,因此不是 *.xhtml (这是初学者的常见错误)。否则它将递归地调用自己。 实际 文件应命名为*.xhtml。您只需在 URL 中将其称为 *.jsf。请咨询/引用 JSF 2.0 books/tutorials/documentation密切关注如何正确配置/使用 JSF。

关于tomcat - 使用 Apache MyFaces 2.0 时出现无限循环/StackOverflowError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2698315/

相关文章:

java - Tomcat是否为每个用户创建一个线程?

java - 更新嵌套控件内的 PrimeFaces 数据表?

java - 如何在 ICEfaces 中选择上传文件的文件名?

html - JSF 显示 HTML 注释

java - 添加到请求 header ?

java - 许多用户帐户(Java、Tomcat、Web)的安全问题

java - 通过 p :ajax with PrimeFaces 3. 3.1 (JSF 2.0) 发送额外参数

java - Primefaces Extension 的 Dynaform 有什么动态

eclipse - Axis2 工作不正常

java - JSF/Primefaces 选择一个菜单会导致问题