2013-01-23 11 views
6

Chciałbym wiedzieć, czy istnieje sposób na wywołanie metody bean zarządzanej jsf (z parametrem typu AjaxBehaviorEvent: tym samym wyzwalanym przy użyciu f: ajax) bezpośrednio za pomocą żądania ajax jquery.Nawiasem mówiąc, ima jsf developper i nie znalazłem przykład o użyciu ajax jquery z Java EE jako struktury po stronie serwera, wszystkie przykłady znalazłem były z php..so Chcę uzyskać pełny przykład na temat tego. Myślę, że innym sposobem obejścia tego problemu może być wysłanie linku komendy z jquery po stronie klienta i przekazanie parametrów za pośrednictwem tego wywołania, ale preferuję poprzednie rozwiązanie i chcę, aby działało.Używanie jquery ajax do wywoływania metody zarządzanej komendy jsf (procedura obsługi odbiornika AjaxBehaviorEvent)

Dziękuję bardzo za pomoc!

Odpowiedz

7

Proszę bardzo:

<script type="text/javascript"> 

    doAwesomeness(); 

</script> 

na stronie:

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

Powodzenia!

+0

Thnx niesamowite stackoverflow członek :) – Bardelman

+1

Ale to nie jest czysty JSF. Tag pochodzi z [RichFaces] (http://docs.jboss.org/richfaces/latest_3_3_X/en/devguide/html/a4j_jsFunction.html). – lucasvc

6

jQuery żądania AJAX i żądania JSF ajax wykorzystuje inny js biblioteki, nie sądzę, nie ma sensu mieszać ci zbyt dużo ...

Jeśli zażyczyć sobie ogień udało działania JSF fasoli z jQuery lepiej użyć ukrytego h:commandButton do tego celu ...

JSF:

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

jeśli chcesz przekazać jakieś bardziej ukryte args można dodać trochę bardziej ukryte komponenty JSF identyfikatory w ukrytym h:commandButtonexecute atrybut, że sposób ich odpowiednie właściwości będą aktualizowane na stronie serwera ...

js

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

Z drugiej strony, jeśli chcesz korzystać z danych zarządzanych fasoli w serwletów, który odpowiada Twój jQuery zwraca zawsze można uzyskać dostęp do danych, które udało JSF, podobnie jak to: JSF - get managed bean by name

+0

Dziękuję za odpowiedź, ale nadal uważam, że nawet jQuery ajax i JSF ajax używają różnych bibliotek js, które mogą być zgłaszane z jednego do drugiego, ponieważ sądzę, że oba z nich są faktycznie do czynienia z żądaniami HTTP, aby mogli komunikować się .. – Bardelman

+0

cóż, teraz poddaję się .. i był zawiązany do wykrycia na firebug, jak utworzone zostało polecenie link z adresem URL żądania dla i mogę zrobić to samo z jquery-ajax, znalazłem to: – Bardelman

+0

j_idt7 = j_idt7 i j_idt7% 3Aj_idt11 = Mary i j_idt7% 3Aj_idt13 = Mary i s_var1 = & s_proclength s_taskId = i = = i javax.faces.ViewState -1257726806850207849% 3A3895641171480667070 i javax.faces.source = j_idt7% 3Aj_idt50 i javax.faces.partial.event = przycisk & javax.faces.partial.execute = j_idt7% 3Aj_idt50 & javax.faces.partial.render = j_idt7% 3Acontent & taskname = marytask & javax.faces.behavior.event = click & javax.faces.partial.ajax = true – Bardelman

2

W tym samym duchu, jak wskazał islandguy, jeśli używasz Primefaces, woud użyć komendy <p:remoteCommand/>, w następujący sposób:

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

z:

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

Hope this helps ..