【问题标题】:Simple jsf2.0 application : javax.faces.application.ViewExpiredException View could not be restored简单的 jsf2.0 应用程序:javax.faces.application.ViewExpiredException 无法恢复视图
【发布时间】:2012-08-18 20:12:05
【问题描述】:

在一个简单的 jsf2.0 应用程序中,我得到这个异常:javax.faces.application.ViewExpiredException 视图无法恢复。

在控制台中我收到以下错误: org.portletfaces.bridge.BridgeException: 必须先调用 setPortletContext(PortletContext)

当我在不使用 Primefaces jar 的情况下执行我的应用程序时,它可以正常工作。但是在添加 Primefaces jar 之后,我开始收到此异常。

我使用的是 Tomcat 7.2。 编辑:应用程序中只有 3 页,没有支持 bean。第一页上的链接正在调用第二页。但是当我点击链接时,我收到了这个错误,第二页没有显示。 无法理解问题的原因。请帮忙。

【问题讨论】:

  • 如果您收到一个 `ViewExpiredException`,则视图范围的支持 bean 已过期。尝试刷新页面。
  • 嗨..我还没有创建任何烘焙豆。该应用程序非常小,只有 3 页。第一页上的链接正在调用第二页。但是当我点击链接时,我收到了这个错误,第二页没有显示出来。
  • 向我们展示相关代码。没有代码,我们看不到哪里出了问题。
  • @siebz0r:该异常不一定与具有视图范围的支持 bean 有关。另见stackoverflow.com/questions/3642919/…

标签: jsf-2 primefaces viewexpiredexception


【解决方案1】:

应用程序中只有 3 个页面,没有支持 bean。第一页上的链接正在调用第二页。但是当我点击链接时,我收到了这个错误,第二页没有显示。

如果您通过UICommand 链接/按钮导航,就会发生这种情况。您根本不应该通过 POST 链接/按钮导航,而应该通过 GET 链接/按钮导航。

用普通的UIOutcomeTarget 链接/按钮替换所有那些错误地用于页面到页面导航的UICommand 链接/按钮。换句话说,将<h:commandButton> 替换为<h:button><h:commandLink><p:commandLink> 替换为<h:link><p:commandButton> 替换为<p:button>

即不要使用

<h:form>
    <p:commandButton value="Go to next page" action="nextpage" />
</h:form>

而是使用

<p:button value="Go to next page" outcome="nextpage" />

另见:

【讨论】:

    猜你喜欢
    • 2016-12-19
    • 2018-02-05
    相关资源
    最近更新 更多