0

我用谷歌搜索了好几次,但我找不到解决方案。我想从 jsf 中的 bean 类进行 javascript 函数调用,我使用以下代码得到它。 RequestContext.getCurrentInstance().execute("handleResize()");
并且工作正常。但我想为该函数的高度和宽度提供两个参数。怎么做到呢 ?请帮忙

4

1 回答 1

5

您似乎没有理解这样一个事实,即在 Java/JSF 的上下文中,所有的 HTML、CSS 和 JavaScript 代码都只是普通String的 vanilla,您似乎期望 HTML/CSS/JS 以某种方式神奇地在 Java/JSF 代码中运行。这不是真的。Java/JSF 是 HTML/CSS/JS 代码生产者,而不是执行者。网络浏览器将它们全部检索为一个大String文件,然后解析并执行它。

如果你想用提供的参数调用一个 JS 函数,就像你在真正的 JS 代码中做的那样:

handleResize(500, 300);

并且您将这些值作为 Java 变量,然后您只需要确保您编写 Java 代码的方式与上面String的内容完全相同(同样,这只是 Java 代码,没有 JS 代码):

String call = "handleResize(" + w + ", " + h + ")";

您可以通过将其打印到标准输出/记录器来预先验证:

System.out.println(call);

它必须准确打印所需的有效 JS 函数调用语法handleResize(500, 300);

如果是这样,那么只需将未修改的内容传递给RequestContext#execute().

RequestContext.getCurrentInstance().execute(call);
于 2013-09-12T11:05:26.577 回答