public class RestorableViewHandler extends ViewHandlerWrapper
restoreView(FacesContext, String)
returns null
and the current request is a
postback and the view in question has <enableRestorableView>
in the metadata. This effectively
prevents the ViewExpiredException
on the view.
Since OmniFaces 2.2, this view handler implementation also detects unload requests coming from ViewScoped
beans and will create a dummy view and only restore the view scoped state instead of building and restoring the
entire view.
EnableRestorableView
,
ViewScoped
CHARACTER_ENCODING_KEY, DEFAULT_FACELETS_SUFFIX, DEFAULT_SUFFIX, DEFAULT_SUFFIX_PARAM_NAME, DISABLE_FACELET_JSF_VIEWHANDLER_PARAM_NAME, FACELETS_BUFFER_SIZE_PARAM_NAME, FACELETS_DECORATORS_PARAM_NAME, FACELETS_LIBRARIES_PARAM_NAME, FACELETS_REFRESH_PERIOD_PARAM_NAME, FACELETS_SKIP_COMMENTS_PARAM_NAME, FACELETS_SUFFIX_PARAM_NAME, FACELETS_VIEW_MAPPINGS_PARAM_NAME
Constructor and Description |
---|
RestorableViewHandler(ViewHandler wrapped)
Construct a new restorable view handler around the given wrapped view handler.
|
Modifier and Type | Method and Description |
---|---|
ViewHandler |
getWrapped() |
UIViewRoot |
restoreView(FacesContext context,
String viewId)
If the current request is an unload request from
ViewScoped , then create a dummy view, restore only the
view scope state and destroy the view, else restore the view as usual. |
addProtectedView, calculateCharacterEncoding, calculateLocale, calculateRenderKitId, createView, deriveLogicalViewId, deriveViewId, getActionURL, getBookmarkableURL, getProtectedViewsUnmodifiable, getRedirectURL, getResourceURL, getViewDeclarationLanguage, initView, removeProtectedView, renderView, writeState
public RestorableViewHandler(ViewHandler wrapped)
wrapped
- The wrapped view handler.public UIViewRoot restoreView(FacesContext context, String viewId)
ViewScoped
, then create a dummy view, restore only the
view scope state and destroy the view, else restore the view as usual. If the <o:enableRestoreView>
is used once in the application, and the restored view is null and the current request is a postback, then
recreate and rebuild the view from scratch. If it indeed contains the <o:enableRestoreView>
,
then return the newly created view, else return null
.restoreView
in class ViewHandlerWrapper
public ViewHandler getWrapped()
getWrapped
in interface FacesWrapper<ViewHandler>
getWrapped
in class ViewHandlerWrapper
Copyright © 2012–2015 OmniFaces. All rights reserved.