通过JS调用JSF方法

tom*_*son 1 javascript java jsf primefaces

我在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);
      }
}
Run Code Online (Sandbox Code Playgroud)

Kis*_*ash 5

您可以使用PrimeFaces远程命令组件(<p:remoteCommand>).

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

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

<p:remoteCommand name="myRemote" actionListener="#{myBean.listen}"/>
Run Code Online (Sandbox Code Playgroud)

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

<script type="text/javascript">
   myRemote(); //makes a remote call
</script>
Run Code Online (Sandbox Code Playgroud)

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

<div onclick="myremote();">...</div>
Run Code Online (Sandbox Code Playgroud)

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

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

听众可能像:

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