Following refer to the Faces event model.
Basically the "action" attribute refers to an action method which returns a String
from which the Faces navigation model can use to decide whether or not a
navigation is necessary based on the value of the string.
typically one uses an action method to execute some code after a button
or link is clicked and then possibly navigate based on the outcome of
executed code.
An actionlistener method compared to an action
method does not return a String. Instead it returns void. It is
basically identical to the action method but instead it just executes
the code after an action event (button click or link click) but a
navigation is not needed.
A good example of actionlistener
could be in response to clicking on a checkbox and having the
actionlistener code behind it change a visual attribute of a page such
as render a component that was not rendered before..
Chapter 8
has exactly this example where I show how you can have a checkbox when
clicked render an additional field in an input form.
So. we just need to remember :
1.
action:MethodExpression representing the application action to invoke when this component is activated by
the user. The expression must evaluate to a public method that takes no parameters, and returns an
Object (the toString() of which is called to derive the logical outcome) which is passed to the
NavigationHandler for this application.
actionlistener .MethodExpression representing an action listener method that will be notified when this component
is activated by the user. The expression must evaluate to a public method that takes an
ActionEvent parameter, with a return type of void.
2.singel page ,and it refresh itself and don't direct or skip to next page , using actionlistener better .
direct or skip ,keep using action first .
3.
action : No paramters ,have return values
actionlistener :ActionEvent parameter, No return value (void) , can't navigation-rule