Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

ajax

jsf

jsf-2

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.

like image 746
martijnve Avatar asked Mar 22 '11 15:03

martijnve


1 Answers

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>
like image 178
BalusC Avatar answered Nov 05 '22 13:11

BalusC