我需要从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;");