-
Available since OmniFaces 2.2
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.