从jsf中的托管bean调用javascript的参数化功能

Nik*_*hil 0 javascript jsf javabeans primefaces

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

Bal*_*usC 5

您似乎无法掌握以下事实:在Java / JSF的上下文中,所有HTML,CSS和JavaScript代码都只是普通的Strings,并且您似乎希望HTML / CSS / JS在Java / JSF代码中以某种方式神奇地运行。这不是真的。Java / JSF是HTML / CSS / JS代码生产者,而不是执行者。Web浏览器将它们全部检索为一个String,然后解析并执行它。

如果您想使用提供的参数来调用JS函数,例如在实际的JS代码中执行的操作时,就像这样:

handleResize(500, 300);
Run Code Online (Sandbox Code Playgroud)

并且您拥有这些值作为Java变量,那么您只需要确保以与上面的代码完全相同的方式编写Java代码即可String(再次,这只是Java代码,没有JS代码):

String call = "handleResize(" + w + ", " + h + ")";
Run Code Online (Sandbox Code Playgroud)

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

System.out.println(call);
Run Code Online (Sandbox Code Playgroud)

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

如果确实如此,则只需将未修改的内容传递给即可RequestContext#execute()

RequestContext.getCurrentInstance().execute(call);
Run Code Online (Sandbox Code Playgroud)