首页 文章

通过JS调用JSF方法

提问于
浏览
1

我在JS代码中有一个for循环,我想调用一个方法,该方法使用JAVA托管bean编写的参数计算一个值并返回一个将在JS中使用的新注释:我在xhtml页面中使用了primefaces和handontable显示数据

这就是我的js的样子

function updateMoneyValue(){
   var thetable; //the handsonTable
   for (var i =0 ; i < thetable.length ; i++)
      {
         var myNewValue = theBeanMethod (firstParam , secondParam);
      }
}

3 回答

  • 0

    没有办法直接这样做 .

    您的java / jsf代码在服务器上解析并执行,然后发送到客户端(浏览器) . 仅在浏览器中javascript开始执行 .

    如果你想调用一些bean的方法并从client / javascript获取结果,你需要通过AJAX调用或某种程度启动新的网络请求 . 您也可以尝试重新编写应用程序的逻辑 .

  • 5

    你可以使用primefaces remoteCommand组件 . 你可以在这篇博文中找到有关remoteCommand的详细信息 .

    http://blogs.bytecode.com.au/glen/2013/09/25/calling-primefaces-remotecommand-with-javascript-arguments.html

  • 0

    你可以使用PrimeFaces remote command component<p:remoteCommand> ) .

    RemoteCommand允许执行支持bean方法并执行由自定义客户端脚本触发的部分更新 . 此示例演示了一个用例,可以根据需要延迟加载页面的某个部分 .

    以下列方式将其添加到视图中:

    <p:remoteCommand name="myRemote" actionListener="#{myBean.listen}"/>
    

    并在Javascript中使用它,如下所示:

    <script type="text/javascript">
       myRemote(); //makes a remote call
    </script>
    

    或者从事件处理程序中调用它,如下所示:

    <div onclick="myremote();">...</div>
    

    如果您还想将参数传递给服务器,请进行以下调用:

    <script type="text/javascript">
       myRemote([{name:'param1', value:150}, {name:'param2', value:220}]); //makes a remote call with parameters
    </script>
    

    听众可能像:

    public void listen(){
        FacesContext context = FacesContext.getCurrentInstance();
        Map<String,String> params = context.getExternalContext().getRequestParameterMap();
        System.out.println(params.get("param1"));
        System.out.println(params.get("param2"));
    }
    

相关问题