[英]Using Primefaces JavaScript to call a JSF method on a bean on the server
在Primefaces用户指南中,它显示了如何向服务器进行AJAX调用的示例
PrimeFaces.ajax.AjaxRequest('/myapp/createUser.jsf',
{
formId: 'userForm',
oncomplete: function(xhr, status) {alert('Done');}
});
我无法弄清楚的是如何调用特定方法。 我的目标是使用JavaScript从客户端使会话无效。
RemoteCommand是一种实现这一目标的好方法,因为它为您提供了一个JavaScript函数来完成这些工作(调用支持bean,刷新,提交表单等,命令链接可以执行的所有操作)。
来自PrimeFaces 3.4文档 :
<p:remoteCommand name="increment" actionListener="#{counter.increment}"
out="count" />
<script type="text/javascript">
function customFunction() {
//your custom code
increment(); //makes a remote call
}
</script>
我通常做的是在页面上放置一个隐藏的p:commandLink,然后让Javascript调用click()事件。
<p:commandLink id="hiddenLink"
actionListener="#{bean.methodToInvoke}" style="display:none"/>
然后
$('#hiddenLink').click();
在请求范围bean的@PostConstruct
方法中执行此操作,该方法与EL的请求JSF页面关联,如#{bean}
。
@ManagedBean
@RequestScoped
public class Bean {
@PostConstruct
public void init() {
// Here.
}
}
与这个问题无关,我只想知道为什么你会这样做? JSF / PrimeFaces使用<f:ajax>
和<p:ajax>
和consorts提供了更好的方法。
是否打算在Window的unload
或beforeunload
事件期间运行它? 如果是这样,那么我必须警告你,这不可靠。 依赖于浏览器,这样的请求是否会实际到达服务器。 它往往不会。 仅用于纯统计或过早清理目的,不用于敏感业务目的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.