在jsf中从托管bean调用javascript的参数化函数

时间:2013-09-12 06:31:19

标签: javascript jsf primefaces javabeans

我用谷歌搜索了几次,但我无法得到解决方案。我想从jsf中的bean类调用javascript函数,我使用下面的代码得到它。 RequestContext.getCurrentInstance().execute("handleResize()");
工作得很好。但是我想给这个函数的高度和宽度赋予两个参数。怎么做到呢 ?请帮忙

1 个答案:

答案 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);