selectOneMenu ajax events
The PrimeFaces ajax events sometimes are very poorly documented, so in most cases you must go to the source code and check yourself.
p:selectOneMenu
supports change event:
<p:selectOneMenu ..> <p:ajax event="change" update="msgtext" listener="#{post.subjectSelectionChanged}" /> <!--...--></p:selectOneMenu>
which triggers listener with AjaxBehaviorEvent
as argument in signature:
public void subjectSelectionChanged(final AjaxBehaviorEvent event) {...}
I'd rather use more convenient itemSelect
event. With this event you can use org.primefaces.event.SelectEvent
objects in your listener.
<p:selectOneMenu ...> <p:ajax event="itemSelect" update="messages" listener="#{beanMB.onItemSelectedListener}"/></p:selectOneMenu>
With such listener:
public void onItemSelectedListener(SelectEvent event){ MyItem selectedItem = (MyItem) event.getObject(); //do something with selected value}
Be carefull that the page does not contain any empty component which has "required" attribute as "true" before your selectOneMenu component running.
If you use a component such as
<p:inputText label="Nm:" id="id_name" value="#{ myHelper.name}" required="true"/>
then,
<p:selectOneMenu .....></p:selectOneMenu>
and forget to fill the required component, ajax listener of selectoneMenu cannot be executed.