1

我最近将我的第一个 JSF 2.0 站点部署到了 openshift。它在 Chrome 下运行良好,并且 index.xhtml 页面在其他浏览器中加载良好,但只要我点击:

<h:commandLink id="aboutUs" action="aboutUs">

或任何其他 commandLink 我收到以下错误:

javax.faces.application.ViewExpiredException: viewId:/index.xhtml - View /index.xhtml could not be restored.
at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:205)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:116)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:154)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930)
at java.lang.Thread.run(Thread.java:679)

这发生在 Internet Explorer 和我的 iPhone 上,但不在 Chrome 上。

尽管该站点具有 Java Script 和 CSS,但它链接到的某些页面只有头部和主体 JSF 标记,没有 JS。出于这个原因,我真的很困惑为什么会发生这种情况,因为我看不到它是 JS 或 CSS 问题。

请帮忙。

谢谢

4

1 回答 1

1

我相信那是因为您正在使用h:commandLink导航。您正在进行回发,然后从一种视图更改为另一种视图。

使用h:outputLinkorh:link代替,甚至是直接的 HTML 链接<a href="/index.html">Index</a>进行导航,它应该可以在任何地方工作。

另外,请查看此问答:

“此链接已停用,因为它未嵌入 JSF 表单中。”

什么时候应该使用 h:outputLink 而不是 h:commandLink?

于 2012-05-11T02:03:02.680 回答