selectOneMenu ajax events selectOneMenu ajax events ajax ajax

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.