The action is not been invoked, because the command button component is not rendered.
During processing of the form submit, the rendered="${param.action == 'edit'}"
on the parent panel group component is been re-evaluated (as safeguard against tampered/hacked requests). However, as you're apparently not retaining that request parameter in the postback (at least, nothing in the code proves otherwise), it evaluates to false
. And thus the parent panel group component is not rendered, including all of its childen.
You need to make sure that the rendered
attribute of the command button and all of its parent components evaluates to true
during the form submit. In this particular case you can achieve that by retaining the request parameter by including a <f:param>
in the command button itself.
<h:commandButton ...>
<f:param name="action" value="#{param.action}" />
</h:commandButton>
See also:
- commandButton/commandLink/ajax action/listener method not invoked or input value not updated - Point 5 applies to you
Unrelated to the concrete problem, it's recommend to ban the usage of ${}
in JSF as it would otherwise lead to unnecessary confusion and questions. Just stick to #{}
all the time.