场景:Total Two屏幕和两个作用域都定义了@ViewScoped
屏幕1进入打开的window.open(screen.xhtml)屏幕并检查屏幕2中的一些功能并关闭屏幕2,然后转到屏幕1并单击按钮然后抛出以下错误。
javax.faces.application.ViewExpiredException: /glb/GlbMbrReviewSubmissionWorkflow.xhtmlNo saved view state could be found for the view identifier: /glb/GlbMbrReviewSubmissionWorkflow.xhtml
at org.apache.myfaces.lifecycle.RestoreViewExecutor.execute(RestoreViewExecutor.java:171)
at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:170)
at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
答案 0 :(得分:0)
每个页面的视图状态在会话中的LRU映射中存储在服务器(默认)中,大小为15.当在第2页中查看最近的页面时,页面将从地图中弹出15次。解决方法是,
要么可以配置增加地图大小以增加它,但会增加服务器内存负载。
或者将defaut状态保存机制值更改为“client”,但会增加网络流量。
一种推荐的解决方案是在指定的秒数内从第1页轮询服务器,以便将视图置于地图顶部,以便不会被删除。