gpt4 book ai didi

jsf-2 - ExternalContext.dispatch() 不起作用

转载 作者:行者123 更新时间:2023-12-05 01:13:09 27 4
gpt4 key购买 nike

在 p:ajax 调用上,监听器调用包含

     FacesContext.getCurrentInstance().getExternalContext().dispatch("/uri.jsf");  

不起作用。我已经在线路上设置了一个断点,它在执行时保持在同一点。它没有前进,我必须重新启动服务器才能再次运行应用程序。
    FacesContext.getCurrentInstance().getExternalContext().redirect("/uri.jsf");

重定向工作得很好。但我想要页面转发,这是调度导航到另一个页面。

最佳答案

ExternalContext#dispatch() 不支持ajax请求。它会导致 JSF 呈现 JavaScript ajax 引擎无法理解的给定资源的 HTML 输出。 ajax 请求必须返回 JavaScript ajax 引擎可以理解的特殊 XML 响应。

ExternalContext#redirect() 支持ajax请求。它将自动返回一个特殊的 XML 响应,指示 JavaScript ajax 引擎调用 window.location调用给定的 URL(您可以在 this answer 中找到 XML 示例)。

您有 2 个选择:

  • 使其成为非 ajax 请求。
  • 执行正常的 JSF 导航。

  • 发出非 ajax 请求很可能不是 <p:ajax> 的选项.在这种情况下,执行正常导航确实是您唯一的选择。
    FacesContext context = FacesContext.getCurrentInstance();
    context.getApplication().getNavigationHandler().handleNavigation(context, null, "/uri.jsf");

    它会在 ajax 请求的情况下自动强制 render="@all" 与新内容。

    关于jsf-2 - ExternalContext.dispatch() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14163457/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com