cbhogf cbhogf - 2 months ago 18
Ajax Question

Ajax request and attributes

I am trying this tutorial which describes how to set attributes into server call and how to analyse the attributes on backing bean;

<h:commandButton id="submit"
actionListener="#{userData.attributeListener}" action="result">
<f:attribute name="value" value="Show Message" />
<f:attribute name="username" value="JSF 2.0 User" />
</h:commandButton>


I googled a lot but most examples show how to set attrs for synch-ed calls not the asynch-ed ones :S So my question is ... how to send attributes on server if that would be the ajax call and how to get them on backing bean (see suggestion A code snippet)?

suggestion A :

<h:commandButton id="submit"
actionListener="#{userData.attributeListener}" action="result">
<f:ajax>
<f:attribute/>? how to
</f:ajax>

</h:commandButton>


and if there is a good tutorial concerning to this question please do share the link :)

Thanks

Answer

OK I just wrote a test which sets attributes out the ajax block as :

<h:commandButton id="submit" 
    actionListener="#{userData.callWithAttributes}" action="result"> 
       <f:attribute name="a" value="#{testa}"/>
       <f:attribute name="b" value="#{testb}"/>
       <f:ajax .../>
</h:commandButton>

...and on the backing bean

...
public void callWithAttributes(ActionEvent e){
  String a=(String) e.getComponent().getAttributes().get("a");
  ...
}
...

Seems like it's working fine :) So attributes should be placed into event-making component block - the h:commandButton in this particular case...

Comments