public class UIViewAction extends UIComponentBase implements ActionSource2
UIViewAction represents a method invocation that occurs during the request processing lifecycle, usually in response to an initial request, as opposed to a postback.
The ViewDeclarationLanguage
 implementation must cause an instance of this component to be placed
 in the view for each occurrence of an <f:viewAction
 /> element placed inside of an <f:metadata
 /> element.  The user must place <f:metadata
 /> as a direct child of the UIViewRoot.
Because this class implements ActionSource2, any actions
 that one would normally take on a component that implements
 ActionSource2, such as UICommand, are valid for
 instances of this class.  Instances of this class participate in the
 regular JSF lifecycle, including on Ajax requests.
The purpose of this component is to provide a light-weight front-controller solution for executing code upon the loading of a JSF view to support the integration of system services, content retrieval, view management, and navigation. This functionality is especially useful for non-faces (initial) requests.
The most common use case for this component is to take actions
 necessary for a particular view, often with the help of one or more
 UIViewParameters.
The NavigationHandler is consulted after the action is
 invoked to carry out the navigation case that matches the action
 signature and outcome. If a navigation case is matched that causes
 the new viewId to be different from the current viewId, the runtime
 must force a redirect to that matched navigation case with different
 viewId, regardless of whether or not the matched navigation case with
 different viewId called for a redirect.  If the response is marked
 complete by the action, the lifecycle advances appropriately.
It's important to note that the full component tree is not built
 before the UIViewAction components are processed on an non-faces
 (initial) request. Rather, the component tree only contains the
 ViewMetadata, an important part of the optimization of this
 component and what sets it apart from a PreRenderViewEvent
 listener.
| Modifier and Type | Field and Description | 
|---|---|
| static String | COMPONENT_FAMILY
 The standard component family for this component. | 
| static String | COMPONENT_TYPE
 The standard component type for this component. | 
ATTRS_WITH_DECLARED_DEFAULT_VALUES, BEANINFO_KEY, bindings, COMPOSITE_COMPONENT_TYPE_KEY, COMPOSITE_FACET_NAME, CURRENT_COMPONENT, CURRENT_COMPOSITE_COMPONENT, FACETS_KEY, HONOR_CURRENT_COMPONENT_ATTRIBUTES_PARAM_NAME, VIEW_LOCATION_KEY| Constructor and Description | 
|---|
| UIViewAction()
 Create a new  UIViewActioninstance with default property values. | 
| Modifier and Type | Method and Description | 
|---|---|
| void | addActionListener(ActionListener listener)Add a new  ActionListenerto the set of listeners interested
 in being notified whenActionEvents occur. | 
| void | broadcast(FacesEvent event)Enable the method invocation
 specified by this component instance to return a value that
 performs navigation, similar in spirit to  | 
| void | decode(FacesContext context)Override behavior from the
 superclass to queue an  | 
| MethodBinding | getAction()Deprecated.  | 
| MethodExpression | getActionExpression()Return the  MethodExpressionpointing at the application
 action to be invoked, if thisUIComponentis activated by
 the user, during the Apply Request Values or Invoke
 Application phase of the request processing lifecycle,
 depending on the value of theimmediateproperty. | 
| MethodBinding | getActionListener()Deprecated.  | 
| ActionListener[] | getActionListeners()Return the set of registered  ActionListeners for thisActionSourceinstance. | 
| String | getFamily()Return the identifier of the component family to which this
 component belongs. | 
| String | getPhase()Returns the name of the lifecycle phase in which the action is to be queued. | 
| boolean | isImmediate()If the value of the component's
  | 
| boolean | isOnPostback()If  | 
| static boolean | isProcessingBroadcast(FacesContext context)Returns  | 
| boolean | isRendered()Return  | 
| void | removeActionListener(ActionListener listener)Remove an existing  ActionListener(if any) from the set of
 listeners interested in being notified whenActionEvents
 occur. | 
| void | setAction(MethodBinding action)Deprecated.  | 
| void | setActionExpression(MethodExpression actionExpression)Set the  MethodExpressionpointing at the appication
 action to be invoked, if thisUIComponentis activated by
 the user, during the Apply Request Values or Invoke
 Application phase of the request processing lifecycle,
 depending on the value of theimmediateproperty. | 
| void | setActionListener(MethodBinding actionListener)Deprecated.  | 
| void | setImmediate(boolean immediate)Set the "immediate execution" flag for this  UIComponent. | 
| void | setOnPostback(boolean onPostback)Controls whether or not this component operates on postback. | 
| void | setPhase(String phase)Attempt to set the lifecycle phase
 in which this instance will queue its  | 
| void | setRendered(boolean condition)Sets the  | 
addClientBehavior, addFacesListener, clearInitialState, encodeBegin, encodeChildren, encodeEnd, findComponent, getAttributes, getChildCount, getChildren, getClientBehaviors, getClientId, getDefaultEventName, getEventNames, getFacesContext, getFacesListeners, getFacet, getFacetCount, getFacets, getFacetsAndChildren, getId, getListenersForEventClass, getParent, getPassThroughAttributes, getRenderer, getRendererType, getRendersChildren, getValueBinding, invokeOnComponent, isTransient, markInitialState, processDecodes, processRestoreState, processSaveState, processUpdates, processValidators, queueEvent, removeFacesListener, restoreAttachedState, restoreState, saveAttachedState, saveState, setId, setParent, setRendererType, setTransient, setValueBinding, subscribeToEvent, unsubscribeFromEventencodeAll, getClientId, getCompositeComponentParent, getContainerClientId, getCurrentComponent, getCurrentCompositeComponent, getNamingContainer, getPassThroughAttributes, getResourceBundleMap, getStateHelper, getStateHelper, getTransientStateHelper, getTransientStateHelper, getValueExpression, initialStateMarked, isCompositeComponent, isInView, isVisitable, popComponentFromEL, processEvent, pushComponentToEL, restoreTransientState, saveTransientState, setInView, setValueExpression, visitTreepublic static final String COMPONENT_TYPE
The standard component type for this component.
public static final String COMPONENT_FAMILY
The standard component family for this component.
public UIViewAction()
 Create a new UIViewAction instance with default property values.
 
public String getFamily()
UIComponentReturn the identifier of the component family to which this
 component belongs.  This identifier, in conjunction with the value
 of the rendererType property, may be used to select
 the appropriate Renderer for this component instance.
getFamily in class UIComponent@Deprecated public MethodBinding getAction()
If the implementing class also implements ActionSource2, the implementation of this method must call
 through to ActionSource2.getActionExpression() and examine
 the result.  If the result came from a previous call to ActionSource.setAction(javax.faces.el.MethodBinding), extract the MethodBinding from it and
 return it.  Otherwise, wrap the returned MethodExpression in a MethodBinding
 implementation, and return it.
If the implementing class does not implement
 ActionSource2, return the MethodBindingpointing at the application action to be invoked,
 if this UIComponent is activated by the user, during the
 Apply Request Values or Invoke Application
 phase of the request processing lifecycle, depending on the value
 of the immediate property.
getAction in interface ActionSource@Deprecated public void setAction(MethodBinding action)
If the implementing class also implements ActionSource2, the implementation of this method must wrap the
 argument action in a class that implements MethodExpression and call through to ActionSource2.setActionExpression(javax.el.MethodExpression), passing the wrapped
 action.
If the implementing class does not implement
 ActionSource2, set the MethodBinding
 pointing at the appication action to be invoked, if this UIComponent is activated by the user, during the Apply
 Request Values or Invoke Application phase of the
 request processing lifecycle, depending on the value of the
 immediate property.
Any method referenced by such an expression must be public, with
 a return type of String, and accept no parameters.
setAction in interface ActionSourceaction - The new MethodBinding expression@Deprecated public MethodBinding getActionListener()
If ActionSource.setActionListener(javax.faces.el.MethodBinding) was not previously called
 for this instance, this method must return null.  If
 it was called, this method must return the exact
 MethodBinding instance that was passed to ActionSource.setActionListener(javax.faces.el.MethodBinding).
 The method to be invoked, if this UIComponent is
 activated by the user, will be called during the Apply
 Request Values or Invoke Application phase of the
 request processing lifecycle, depending upon the value of the
 immediate property.
getActionListener in interface ActionSource@Deprecated public void setActionListener(MethodBinding actionListener)
Wrap the argument actionListener in an
 implementation of ActionListener
 and store it in the internal data structure that backs the ActionSource.getActionListeners() method, taking care to over-write any
 instance that was stored by a previous call to
 setActionListener.
Any method referenced by such an expression must be public, with
 a return type of void, and accept a single parameter of
 type ActionEvent.
setActionListener in interface ActionSourceactionListener - The new method binding expressionpublic boolean isImmediate()
If the value of the component's
 immediate attribute is true, the action
 will be invoked during the Apply Request Values JSF
 lifecycle phase.  Otherwise, the action will be invoked during
 the Invoke Application phase, the default behavior. The
 phase can be set explicitly in the phase attribute,
 which takes precedence over the immediate
 attribute.
isImmediate in interface ActionSourcepublic void setImmediate(boolean immediate)
Set the "immediate execution" flag for this UIComponent.
setImmediate in interface ActionSourceimmediate - The new immediate execution flagpublic String getPhase()
Returns the name of the lifecycle phase in which the action is to be queued.
public void setPhase(String phase)
Attempt to set the lifecycle phase
 in which this instance will queue its ActionEvent.  Pass
 the argument phase to PhaseId.phaseIdValueOf(java.lang.String).  If the result is not one of the
 following values, FacesException must be thrown.
If set, this value takes precedence over the immediate flag.
public static boolean isProcessingBroadcast(FacesContext context)
Returns true if the
 current request processing lifecycle is in the midst of
 processing the broadcast of an event queued during a call to
 decode(javax.faces.context.FacesContext).  The implementation of broadcast(javax.faces.event.FacesEvent) is
 responsible for ensuring that calls to this method accurately
 reflect this fact.
context - FacesContext for the current requestpublic void addActionListener(ActionListener listener)
Add a new ActionListener to the set of listeners interested
 in being notified when ActionEvents occur.
addActionListener in interface ActionSourcelistener - The ActionListener to be addedpublic ActionListener[] getActionListeners()
Return the set of registered ActionListeners for this
 ActionSource instance.  If there are no registered listeners,
 a zero-length array is returned.
getActionListeners in interface ActionSourcepublic void removeActionListener(ActionListener listener)
Remove an existing ActionListener (if any) from the set of
 listeners interested in being notified when ActionEvents
 occur.
removeActionListener in interface ActionSourcelistener - The ActionListener to be removedpublic MethodExpression getActionExpression()
Return the MethodExpression pointing at the application
 action to be invoked, if this UIComponent is activated by
 the user, during the Apply Request Values or Invoke
 Application phase of the request processing lifecycle,
 depending on the value of the immediate
 property.
Note that it's possible that the returned
 MethodExpression is just a wrapper around a
 MethodBinding instance whith was set by a call to
 ActionSource.setAction(javax.faces.el.MethodBinding).  This makes it possible for the
 default ActionListener to continue to work properly with
 older components.
getActionExpression in interface ActionSource2public void setActionExpression(MethodExpression actionExpression)
Set the MethodExpression pointing at the appication
 action to be invoked, if this UIComponent is activated by
 the user, during the Apply Request Values or Invoke
 Application phase of the request processing lifecycle,
 depending on the value of the immediate
 property.
Any method referenced by such an expression must be public, with
 a return type of String, and accept no parameters.
setActionExpression in interface ActionSource2actionExpression - The new method expressionpublic boolean isOnPostback()
If true this
 component will operate on postback.
public void setOnPostback(boolean onPostback)
Controls whether or not this component operates on postback.
public boolean isRendered()
Return true if this
 component should take the actions specified in the decode(javax.faces.context.FacesContext) method.
isRendered in class UIComponentBasepublic void setRendered(boolean condition)
Sets the if property
 of this component.
setRendered in class UIComponentBasecondition - the new value of the property.public void broadcast(FacesEvent event) throws AbortProcessingException
Enable the method invocation
 specified by this component instance to return a value that
 performs navigation, similar in spirit to UICommand.broadcast(javax.faces.event.FacesEvent).
Take no action and return immediately if any of the following conditions are true.
The response has already been marked as complete.
The current UIViewRoot is different from the
 event's source's UIViewRoot.
Save a local reference to the viewId of the current
 UIViewRoot.  For discussion, let this reference be
 viewIdBeforeAction.
Obtain the ActionListener from the Application.  Wrap the current FacesContext in an implementation of FacesContextWrapper that overrides the
 FacesContext.renderResponse() method such that it takes no
 action.  Set the current FacesContext to be the
 FacesContextWrapper instance.  Make it so a call to
 isProcessingBroadcast(javax.faces.context.FacesContext) on the current FacesContext will
 return true.  This is necessary because the NavigationHandler will call this method
 to determine if the navigation is happening as the result of a
 UIViewAction.  Invoke ActionListener.processAction(javax.faces.event.ActionEvent).  In a finally block,
 restore the original FacesContext, make it so a call
 to isProcessingBroadcast(javax.faces.context.FacesContext) on the current context will
 return false and discard the wrapper.
If the response has been marked as complete during the
 invocation of processAction(), take no further
 action and return.  Otherwise, compare
 viewIdBeforeAction with the viewId of the
 UIViewRoot on the FacesContext after
 the invocation of processAction().  If the two
 viewIds are the same and no more UIViewAction events
 have been queued by a call to decode(javax.faces.context.FacesContext), call FacesContext.renderResponse() and return.  It is possible to
 detect the case where no more UIViewAction events
 have been queued because the number of such events queued has
 been noted in the specification for decode(javax.faces.context.FacesContext).  Otherwise,
 execute the lifecycle on the new UIViewRoot.
broadcast in class UIComponentBaseevent - FacesEvent to be broadcastAbortProcessingException - Signal the JavaServer Faces
  implementation that no further processing on the current event
  should be performedIllegalArgumentException - if the implementation class
  of this FacesEvent is not supported by this componentNullPointerException - if event is
 nullpublic void decode(FacesContext context)
Override behavior from the
 superclass to queue an ActionEvent that may result in the
 invocation of the action or any
 actionListeners that may be associated with this
 instance.
Take no action if any of the following conditions are true:
The current request is a postback and the instance has
 been configured to not operate on postback. See isOnPostback().
The condition stated in the if property
 evaluates to false.  See isRendered()
Instantiate an ActionEvent, passing this component
 instance as the source.  Set the phaseId property of
 the ActionEvent as follows.
If this component instance has been configured with a
 specific lifecycle phase with a call to setPhase(java.lang.String) use
 that as the phaseId
If the value of the immediate property is
 true, use PhaseId.APPLY_REQUEST_VALUES.
Otherwise, use PhaseId.INVOKE_APPLICATION.
 
Queue the event with a call to UIComponentBase.queueEvent(javax.faces.event.FacesEvent). Keep track
 of the number of events that are queued in this way on this run
 through the lifecycle.  This information is necessary during
 processing in broadcast(javax.faces.event.FacesEvent).
decode in class UIComponentBasecontext - FacesContext for the request we are processingCopyright © 1996-2013, Oracle and/or its affiliates. All Rights Reserved. Use is subject to license terms.