This content has been marked as final.
Show 2 replies
-
1. Re: looking for expert advices !!
ilya_shaikovsky Oct 9, 2009 12:02 PM (in response to ronanker)you could check out richfaces-demo (link in my signature) and check how we storing some state properties (e.g. skin, active tab) in request parameters. So them are encoded into url and the page not changed on refresh.
-
2. Re: looking for expert advices !!
ronanker Oct 12, 2009 8:40 AM (in response to ronanker)Here is our solution :
in a phase listener "before restore view":ExternalContext extCtx = facesCtx.getExternalContext(); boolean postback = !extCtx.getRequestParameterMap().isEmpty() && extCtx.getRequestParameterMap().containsKey(ResponseStateManager.VIEW_STATE_PARAM); if (!postback){ // mus be a GET Object request = extCtx.getRequest(); if (request instanceof HttpServletRequest) { String viewId = ((HttpServletRequest) request).getServletPath(); Object viewState = extCtx.getSessionMap().get(LAST_VIEW_STATE); if (viewState != null){ //caution: JSF Sun RI specific RequestStateManager.set(facesCtx, RequestStateManager.FACES_VIEW_STRUCTURE, viewState); facesCtx.getApplication().getViewHandler().restoreView(facesCtx, viewId); } } }
And after the render view phase:ExternalContext externalContext = event.getFacesContext().getExternalContext(); //caution : RichFaces specific Object viewSeq = externalContext.getRequestMap().get(AjaxStateManager.VIEW_SEQUENCE); if (viewSeq != null){ externalContext.getSessionMap().put(LAST_VIEW_STATE, viewSeq); }