在此 JSF Managed Bean 的注销方法中执行的以下 JavaScript 代码不起作用,但 java 代码实际上起作用。因此,尽管确实发生了注销,但 JavaScript 代码(基本上是单击按钮)并未执行。对可能发生的事情有什么想法吗?谢谢提前!
@SessionScoped
@ManagedBean(name = "LoginController")
public class LoginController implements Serializable {
...
public void logout() {
try {
RequestContext rc = RequestContext.getCurrentInstance();
script = "$('#btnLogOut').prop('disabled', false); window.location.reload(true); $('#btnLogOut').click(); $('#btnLogOut').prop('disabled', true);";
rc.execute(script);
ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
ec.invalidateSession();
} catch (Exception e) {
log.error("error", e);
}
}
最佳答案
您在脚本开头使用 window.location.reload(true);
重新加载页面,因此浏览器可能没有时间执行其后的部分,即注销的部分单击按钮。
关于从 JSF Managed Bean 执行的 JavaScript 代码不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31035552/