我需要从 JSF 托管 Bean 的方法执行 JavaScript 代码,该方法基本上是单击 Facelet(.xhtml 文件)上的按钮。所有这些都可以通过使用 PrimeFaces 的 RequestContext.execute("{js here}") 完美运行,但是当使用 ExternalContext 添加一些“页面重新加载”代码行时,它不再起作用... (请参阅下面的代码)。看起来“页面重新加载”行阻止了 JavaScript 代码的执行。欢迎任何提示!
public void myMethod() throws IllegalStateException, Exception {
RequestContext rc = RequestContext.getCurrentInstance();.
rc.execute("$('#myButton').click();");
try {
ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
ec.redirect(((HttpServletRequest) ec.getRequest()).getRequestURI());
} catch (IOException e) {
log.error("Error", e);
}
最佳答案
RequestContext 用于当前请求,重定向是另一个请求。这是行不通的。
尝试做这样的事情:
RequestContext rc = RequestContext.getCurrentInstance();
rc.execute("$('#myButton').click(); window.location = newURL;");
关于javascript - JSF:强制页面重新加载时,从托管 Bean 调用 javascript 代码不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30956014/