Invoke action method on click of h:selectOneMenu

user2459256 picture user2459256 · Sep 13, 2013 · Viewed 44.8k times · Source

I have the following drop down list:

<h:selectOneMenu value="#{user.favCoffee3}"  onclick="">
   <f:selectItems value="#{user.favCoffee3Value}" var="c"
   itemLabel="#{c.coffeeLabel}" itemValue="#{c.coffeeValue}" />
</h:selectOneMenu>

I would like to launch some method from the bean by drop down list item click. How can I achieve it?

Answer

Konstantin Yovkov picture Konstantin Yovkov · Sep 13, 2013

You can use the valueChangeListener attribute, pointing to a method in the managed-bean and add a submit() in the onchange attribute.

The form should look like :

<h:form>
    <h:selectOneMenu valueChangeListener="#{bean.valueChanged}" 
                     onchange="submit()">
        <f:selectItem itemValue="1" itemLabel="First" />
        <f:selectItem itemValue="2" itemLabel="Second" />
    </h:selectOneMenu>
</h:form>

And the valueChangeListener method in the managed bean would be:

public void valueChanged(ValueChangeEvent event) {
    //do your stuff
}