我用谷歌搜索了几次,但我无法得到解决方案。我想从jsf中的bean类调用javascript函数,我使用下面的代码得到它。
RequestContext.getCurrentInstance().execute("handleResize()");
工作得很好。但是我想给这个函数的高度和宽度赋予两个参数。怎么做到呢 ?请帮忙
答案 0 :(得分:5)
你似乎没有意识到在Java / JSF的上下文中,所有HTML,CSS和JavaScript代码都只是普通的String
,你似乎期望HTML / CSS / JS不知何故神奇地在Java / JSF代码中运行。这不是真的。 Java / JSF是HTML / CSS / JS代码生成器,而不是执行器。 webbrowser将它们全部检索为一个大String
,然后解析并执行它。
如果你想用提供的参数调用一个JS函数,就像你在真正的JS代码中那样:
handleResize(500, 300);
你有这些值作为Java变量,那么你只需要确保以这样的方式编写Java代码,即产生上面的String
(再次,这只是Java代码,没有JS代码) ):
String call = "handleResize(" + w + ", " + h + ")";
您可以通过将其打印到stdout / logger来预先验证:
System.out.println(call);
它必须完全打印所需的有效JS函数调用语法handleResize(500, 300);
。
如果是,请将未经修改的内容传递给RequestContext#execute()
。
RequestContext.getCurrentInstance().execute(call);