我在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);
}
}
答案 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的详细信息。