我想知道是否有办法通过使用jquery ajax服务器请求直接触发JSF托管的bean方法(使用AjaxBehaviorEvent类型参数:使用f:ajax时触发的相同)。顺便说一下,我是一个jsf开发人员,我没有找到一个关于使用jquery ajax和Java EE作为服务器端框架的例子,我找到的所有例子都是php。所以我希望得到一个关于这样做的完整例子。我认为另一种解决方法可能是在客户端使用 jquery 提交命令链接并通过该调用传递参数,但我更喜欢前一种解决方案,我希望它能工作。
非常感谢您的帮助!
你来了:
<script type="text/javascript">
doAwesomeness();
</script>
在您的页面中:
<a4j:jsFunction name="doAwesomeness" action="#{awesomeBean.awesomeMethod}"/>
祝你好运!
请求和JSF ajax请求使用不同的js库,我认为尝试将它们混合太多是没有意义的......
如果你想从jQuery触发JSF管理的Bean操作,你最好使用隐藏的h: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();
另一方面,如果你想在与jQuery调用相对应的servlet中使用受管Bean数据,你总是可以访问JSF受管数据,如下所示: JSF - 按名称获取受管Bean
与 islandguy 指出的相同,如果您使用 Primefaces,您将使用 <p:remoteCommand/>
命令,如下所示:
<script type="text/javascript">
doAwesomeness();
</script>
跟:
<p:remoteCommand name="doAwesomeness"
actionListener="#{awesomeBean.awesomeMethod}"
oncomplete="jsToExecuteOnAjaxSuccess()" />
希望这有帮助..