【发布时间】:2015-06-24 19:40:06
【问题描述】:
在这个 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);
}
}
【问题讨论】:
-
听起来太不清楚了...也许您可以从您的 Web 控制台向我们提供一些有关 JS 错误的信息?
-
嗨,Dmitry,谢谢,但我没有更多详细信息,因为我在 JavaFX 上运行 JSF/PrimeFaces,所以我无法访问 Chrome 的控制台。我在 JavaFX 中安装了 Firebug Lite,但也没有多大帮助。它没有显示任何错误(至少我没有看到它们)。
-
javascript 代码很可能不起作用,因为您使会话无效。
-
贾拉尔,感谢您的评论!
标签: javascript jsf jsf-2 primefaces