Using jquery ajax to call a jsf managed bean method (an AjaxBehaviorEvent listener handler)

怎甘沉沦 提交于 2019-12-04 12:14:24

问题


i would like to know if there is a way to fire a jsf managed bean method (with an AjaxBehaviorEvent type parameter: the same triggered when using f:ajax) directly by using a jquery ajax server request.By the way , i m a jsf developper and i didn't find an example about using jquery ajax with Java EE as a server-side framework, all examples i found were with php..so i wish to get a complete example about doing that. i think the other workaround maybe is to make a commandLink being submitted with jquery on the client side and passing parameters through that call but i prefer the former solution and i wish it work.

Thanks very much for help !


回答1:


Here you go:

<script type="text/javascript">

    doAwesomeness();

</script>

In your page:

<a4j:jsFunction name="doAwesomeness" action="#{awesomeBean.awesomeMethod}"/>

Good luck!




回答2:


jQuery ajax request and JSF ajax request uses different js library's , I don't think there is a point in trying to mix those to too much...

If you whish to fire a JSF managed bean action from jQuery you better use a hidden h:commandButton for that purpose...

JSF:

<h:commandButton id="someId" action="#{someBean.someMethod}" style="display:none">
    <f:ajax render="someId" execute="someId"/>
</h:commandButton>

if you want to pass some more hidden args you can add some more hidden JSF components ids in the hidden h:commandButton execute attribute, that way their corresponding properties will be updated on server side...

js

$("#someId").click();

On the other side , if you want to use managed bean data in servlets that corresponds to your jQuery calls you can always access that JSF managed data, like this : JSF - get managed bean by name




回答3:


In the same vein as pointed out by islandguy, if you use Primefaces, you woud use the <p:remoteCommand/> command, as follows :

<script type="text/javascript">
      doAwesomeness();
</script>

with :

 <p:remoteCommand name="doAwesomeness" 
          actionListener="#{awesomeBean.awesomeMethod}"
          oncomplete="jsToExecuteOnAjaxSuccess()" />

Hope this helps..



来源:https://stackoverflow.com/questions/14475969/using-jquery-ajax-to-call-a-jsf-managed-bean-method-an-ajaxbehaviorevent-listen

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!