- All Implemented Interfaces:
ActionSource,PartialStateHolder,StateHolder,TransientStateHolder,ComponentSystemEventListener,FacesListener,SystemEventListenerHolder,EventListener
The <o:viewAction> is a component that extends the standard <f:viewAction> and
changes the if attribute to be evaluated during INVOKE_APPLICATION phase instead of the
APPLY_REQUEST_VALUES phase. This allows developers to let the if attribute check the
converted and validated model values before performing the view action, which results in much more intuitive behavior.
In below example, the FooConverter may convert a non-null parameter to null without causing
a validation or conversion error, and the intent is to redirect the current page to otherpage.xhtml when
the converted result is null.
<f:viewParam name="foo" value="#{bean.foo}" converter="fooConverter" />
<f:viewAction action="otherpage" if="#{bean.foo eq null}" />
This is however not possible with standard <f:viewAction> as it evaluates the if
attribute already before the conversion has taken place. This component solves that by postponing the evaluation of
the if attribute to the INVOKE_APPLICATION phase.
<f:viewParam name="foo" value="#{bean.foo}" converter="fooConverter" />
<o:viewAction action="otherpage" if="#{bean.foo eq null}" />
Only when you set immediate="true", then it will behave the same as the standard
<f:viewAction>.
Usage
You can use it the same way as <f:viewAction>, you only need to change f: to
o:.
<o:viewAction action="otherpage" if="#{bean.property eq null}" />
Messaging
You can use the message attribute to add a global flash warning message.
<o:viewAction ... message="Please use a valid link from within the site" />
Note that the message will only be shown when the redirect has actually taken place. The support was added in OmniFaces 3.2.
- Since:
- 2.2
- Author:
- Bauke Scholtz
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringThe component type, which is "org.omnifaces.component.input.ViewAction".Fields inherited from class jakarta.faces.component.UIViewAction
COMPONENT_FAMILYFields inherited from class jakarta.faces.component.UIComponent
ATTRS_WITH_DECLARED_DEFAULT_VALUES, BEANINFO_KEY, bindings, COMPOSITE_COMPONENT_TYPE_KEY, COMPOSITE_FACET_NAME, FACETS_KEY, VIEW_LOCATION_KEY -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidbroadcast(FacesEvent event) Only broadcast the action event whenUIViewAction.isRendered()returnstrue.Returns the global flash warning message to be shown in the redirected page.booleanReturnstrueif theimmediate="true"attribute is not set, otherwise delegate to super, hereby maintaining the original behavior ofimmediate="true".voidsetMessage(String message) Sets the global flash warning message to be shown in the redirected page.Methods inherited from class jakarta.faces.component.UIViewAction
addActionListener, decode, getActionExpression, getActionListeners, getFamily, getPhase, isImmediate, isOnPostback, isProcessingBroadcast, removeActionListener, setActionExpression, setImmediate, setOnPostback, setPhase, setRenderedMethods inherited from class jakarta.faces.component.UIComponentBase
addClientBehavior, addFacesListener, clearInitialState, encodeAll, encodeBegin, encodeChildren, encodeEnd, findComponent, getAttributes, getChildCount, getChildren, getClientBehaviors, getClientId, getDefaultEventName, getEventNames, getFacesContext, getFacesListeners, getFacet, getFacetCount, getFacets, getFacetsAndChildren, getId, getParent, getPassThroughAttributes, getRenderer, getRendererType, getRendersChildren, invokeOnComponent, isTransient, markInitialState, processDecodes, processRestoreState, processSaveState, processUpdates, processValidators, queueEvent, removeFacesListener, restoreAttachedState, restoreState, saveAttachedState, saveState, setId, setParent, setRendererType, setTransient, visitTreeMethods inherited from class jakarta.faces.component.UIComponent
getClientId, getCompositeComponentParent, getContainerClientId, getCurrentComponent, getCurrentCompositeComponent, getListenersForEventClass, getNamingContainer, getPassThroughAttributes, getResourceBundleMap, getStateHelper, getStateHelper, getTransientStateHelper, getTransientStateHelper, getValueExpression, initialStateMarked, isCompositeComponent, isInView, isVisitable, popComponentFromEL, processEvent, pushComponentToEL, restoreTransientState, saveTransientState, setInView, setValueExpression, subscribeToEvent, unsubscribeFromEvent
-
Field Details
-
COMPONENT_TYPE
The component type, which is "org.omnifaces.component.input.ViewAction".- See Also:
-
-
Constructor Details
-
ViewAction
public ViewAction()
-
-
Method Details
-
broadcast
Only broadcast the action event whenUIViewAction.isRendered()returnstrue. The default implementation will always broadcast. TheUIViewAction.isRendered()is by default only considered duringUIViewAction.decode(jakarta.faces.context.FacesContext).If the action event performs any redirect, then add any
getMessage()as a global flash warning message.- Overrides:
broadcastin classUIViewAction
-
isRendered
public boolean isRendered()Returnstrueif theimmediate="true"attribute is not set, otherwise delegate to super, hereby maintaining the original behavior ofimmediate="true".- Overrides:
isRenderedin classUIViewAction
-
getMessage
Returns the global flash warning message to be shown in the redirected page.- Returns:
- The global flash warning message to be shown in the redirected page.
- Since:
- 3.2
-
setMessage
Sets the global flash warning message to be shown in the redirected page.- Parameters:
message- The global flash warning message to be shown in the redirected page.- Since:
- 3.2
-