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

前端 未结 3 769
悲&欢浪女
悲&欢浪女 2021-02-09 15:17

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 jqu

相关标签:
3条回答
  • 2021-02-09 16:15

    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

    0 讨论(0)
  • 2021-02-09 16:15

    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..

    0 讨论(0)
  • 2021-02-09 16:18

    Here you go:

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

    In your page:

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

    Good luck!

    0 讨论(0)
提交回复
热议问题