【问题标题】:JavaScript code executed from a JSF Managed Bean not working从 JSF 托管 Bean 执行的 JavaScript 代码不起作用
【发布时间】: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


【解决方案1】:

您在脚本开头使用window.location.reload(true); 重新加载页面,因此浏览器可能没有时间执行后面的部分,即单击注销按钮的部分。

【讨论】:

  • 你好 sainaen! 谢谢,我会试试你的建议。
猜你喜欢
  • 2015-09-06
  • 1970-01-01
  • 2012-02-02
  • 2013-01-24
  • 1970-01-01
  • 1970-01-01
  • 2012-03-04
  • 1970-01-01
  • 2023-03-05
相关资源
最近更新 更多