如何在页面加载时通过Bean JSF传递参数来调用JS函数?

时间:2017-10-30 17:08:50

标签: javascript java jquery jsf web

我必须通过在页面加载时将向量作为参数传递来调用我的JS中的函数。

我可以使用p:commandButton执行此操作,其中:

 actionListener = "# {routeEnterBean.GetMap ()}"

我在Bean中运行该函数(在数据库中获取值),然后在这里:

 oncomplete = "initMap (xhr , status, args) "

因此,执行JS功能

Code Bean:

public void gerarMapa() {   
        RequestContext context = RequestContext.getCurrentInstance();
        context.addCallbackParam("coord", new 
          org.primefaces.json.JSONArray(coordenadas));
    }

函数JS

function initMap(xhr, status, args) {  
    var qtd_entregas = args.coord.length;
    for (var i = 0; i < args.coord.length; i++) {
        waypts.push({
            location : args.coord[i].latitude + ', ' + args.coord[i].longitude,
            stopover : true,
        });
    }
}

但我想在不加载页面的情况下立即点击按钮这样做。

我知道可以使用此命令执行一个函数:

RequestContext.getCurrentInstance().execute("testeJS();");

但我不知道如何将矢量作为参数传递

1 个答案:

答案 0 :(得分:1)

您可以保留现有代码并使用Primefaces p:remoteCommand通过在页面上添加以下行来执行此操作

<p:remoteCommand autoRun="true" actionListener="#{routeEnterBean.gerarMapa()}" oncomplete="initMap(xhr, status, args);"/>

属性autoRun="true"将强制p:remoteCommand在页面加载时执行。