Search code examples
ajaxjsfjsf-2

Invoke <h:commandLink> action method using <f:ajax>


I have the following code:

<h:commandLink action="#{testBean.showSomething}">
    Do Stuff
</h:commandLink>

which does what I want (change the state of testbean and reload the page which will show a different set of divs. because of their "rendered" properties) Now I want to use ajax to accomplish this so I did this:

<h:commandLink action="#{testBean.showSomething}">
    <f:ajax event="click" render=":content" />
    Do Stuff
</h:commandLink>

However this causes the showSomething method to not even be called. IMHO what I want to do is rather simple but I can't for the life of me figure out how to do it.


Solution

  • You need to use event="action" instead of event="click". You could even omit it altogether. It's namely the default event the <f:ajax> is listening on when nested in an UICommand component.

    <h:commandLink action="#{testBean.showSomething}">
        <f:ajax render=":content" />
        Do Stuff
    </h:commandLink>