使用Primefaces JavaScript在服务器上的bean上调用JSF方法

Mar*_*ang 5 javascript ajax jsf primefaces

在Primefaces用户指南中,它显示了如何向服务器进行AJAX调用的示例

PrimeFaces.ajax.AjaxRequest('/myapp/createUser.jsf',
{
    formId: 'userForm',
    oncomplete: function(xhr, status) {alert('Done');}
});
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚的是如何调用特定方法.我的目标是使用JavaScript从客户端使会话无效.

Dan*_*lor 17

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>
Run Code Online (Sandbox Code Playgroud)


Bal*_*usC 1

@PostConstruct在请求作用域 bean 的方法中执行此操作,该 bean 与 EL 所请求的 JSF 页面相关联#{bean}

@ManagedBean
@RequestScoped
public class Bean {

    @PostConstruct
    public void init() {
        // Here.
    }

}
Run Code Online (Sandbox Code Playgroud)

与这个问题无关,我只是想知道你为什么要这样做?JSF/PrimeFaces 提供了更好的使用<f:ajax>and<p:ajax>和 consorts 的方法。

是否打算在窗口unloadbeforeunload事件期间运行它?如果是这样,那么我必须警告你,这是不可靠的。此类请求是否真正到达服务器取决于浏览器。通常情况下不会。仅将其用于纯粹的统计或过早清理目的,而不用于敏感的业务目的。