从 JSF Managed Bean 执行的 JavaScript 代码不起作用

标签 javascript jsf jsf-2 primefaces

在此 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/

相关文章:

javascript - 从 onClick 事件中选择 JavaScript 对象

javascript - 如何用javascript模拟点击 anchor 标签?

ajax - JSF 2.0 : ajax request when press ENTER

java - JSF 2.0 : @ResourceDependency does not work when adding UIComponent programmatically

javascript - 本地存储获取后对象未更新

javascript - Angular或js如何在不指定参数名的情况下返回数据

java - Div 随图像动态更新..... JSF

java - Primefaces Data Exporter 目标必须是绝对 ID 吗?

java - 在 JSF 中使用 h :inputFile and javax. servlet.http.Part 上传之前验证文件

java - Primefaces 嵌套 dataTable 渲染问题