通过JS调用JSF方法

时间:2014-05-28 19:23:58

标签: java javascript 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);
      }
}

3 个答案:

答案 0 :(得分:5)

您可以使用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"));
}

答案 1 :(得分:0)

没有办法直接这样做。

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

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

答案 2 :(得分:0)

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

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