6

我想知道是否有办法通过使用 jquery ajax 服务器请求直接触发 jsf 托管 bean 方法(使用 AjaxBehaviorEvent 类型参数:使用 f:ajax 时触发相同)。顺便说一下,ima jsf 开发人员和我没有找到关于使用 jquery ajax 和 Java EE 作为服务器端框架的示例,我发现的所有示例都是使用 php..所以我希望获得一个完整的示例。我认为另一种解决方法可能是在客户端使用 jquery 提交 commandLink 并通过该调用传递参数,但我更喜欢前一种解决方案,我希望它能够工作。

非常感谢您的帮助!

4

3 回答 3

7

干得好:

<script type="text/javascript">

    doAwesomeness();

</script>

在您的页面中:

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

祝你好运!

于 2013-04-05T22:43:40.097 回答
6

jQuery ajax 请求和 JSF ajax 请求使用不同的 js 库,我认为尝试将它们混合太多没有意义......

如果您希望从 jQuery 触发 JSF 托管 bean 操作,您最好使用 hiddenh:commandButton来实现该目的......

JSF:

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

如果您想传递更多隐藏的参数,您可以在隐藏h:commandButton execute属性中添加更多隐藏的 JSF 组件 ID,这样它们的相应属性将在服务器端更新...

js

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

另一方面,如果您想在 servlet 中使用与您的 jQuery 调用相对应的托管 bean 数据,您始终可以访问该 JSF 托管数据,如下所示:JSF - get managed bean by name

于 2013-01-23T09:40:05.273 回答
3

与 islandguy 指出的相同,如果您使用 Primefaces,您将使用以下<p:remoteCommand/>命令:

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

和 :

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

希望这可以帮助..

于 2014-04-19T03:57:53.323 回答