Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Handling ViewExpiredException depending on the current view

I am using JSF 2.0 and Primefaces in my project.

I have two xhtml pages namely Cars.xhtml and Bikes.xhtml.

I am using ViewScoped backing beans.

Currently If get view expired exception from any of the two pages,im handling it in the web.xml. through the error-page tag and directing to welcome.xhtml.

Now If i get a viewexpired exception from Bikes.xhtml I need to direct to another page which is BikesHome.xhtml instead of welcome.xhtml.

If the exception is from Cars.xhtml, welcome.xhtml should be shown.

Please help me how to do.

like image 364
user1234 Avatar asked Jan 18 '23 15:01

user1234


1 Answers

I not 100% sure about this (because I haven't tried it myself) but here is my suggestion for - Check this out Dealing Gracefully with ViewExpiredException in JSF2.

if (t instanceof ViewExpiredException) {
    ViewExpiredException vee = (ViewExpiredException) t;

At this point you can get the view id as follows -

vee.getViewId();

And then based on the view id do the desired navigation.

NavigationHandler nh = facesContext.getApplication().getNavigationHandler();
//check condition, set view       
nv.handleNavigation(facesContext, null, "/view-id?faces-redirect=true");
facesContext.renderResponse();

Or, I think you could also do -

FacesContext.getExternalContext().redirect(url);
FacesContext.responseComplete();

to redirect.

like image 136
Bhesh Gurung Avatar answered Jan 31 '23 01:01

Bhesh Gurung