3
votes

I have wrapper PrimeFaces.ajax.AjaxResponse to handle ViewExpiredException (reloading the page):

var handleViewExpired = function (viewId) {
    window.alert('${msg.ajax.viewExpired}');
    window.location.reload();
};

However, sometimes I got that error over and over again after trying to click anything invoking AJAX requests on the site:

javax.faces.application.ViewExpiredException: /tree.xhtmlNo saved view state could be found for the view identifier: /tree.xhtml
    at org.apache.myfaces.lifecycle.RestoreViewExecutor.execute(RestoreViewExecutor.java:128)

Am I doing refresh in wrong way? What should I do to invoke full page reload, such as clicking reload in browser? Do I need to remove cookies (JSESSIONID, oam.Flash.RENDERMAP.TOKEN)?

I'm using PrimeFaces 3.5 with MyFaces 2.0.7 running on WebSphere 7.0.

1

1 Answers

1
votes

If you have many (>15) pages/views/frames that are concurrently opened in the session, then, the following may be useful.

You need to have a look on:

1. numberOfViewsInSession: defines the number of (top-level) view states (pages) to support back button operation

2. numberOfLogicalViews: defines the number of logical views (frames) that can present in a page (per top-level view)

A quick action to make sure if it's relevant is to set those numbers to 500, and see If they are relevant, then, you can find more information in the following links:

http://www.java.net/node/681211

Problem with numberOfViewsInSession and multiple tabs