【问题标题】:Unable to update a component after a download. Answer 15745235 does not work下载后无法更新组件。回答 15745235 不起作用
【发布时间】:2021-09-24 13:46:30
【问题描述】:

PS:我试过https://stackoverflow.com/a/15745235/1763602,但它不起作用。

我有一个下载文件的p:commandButton

<p:remoteCommand name="stop" update=":myComponentId" />

<p:commandButton
    value="download"
    ajax="false"
    onclick="PrimeFaces.monitorDownload(null, stop)"
>
    <p:fileDownload 
        value="#{myBean.download()}"
    />
</p:commandButton>

不幸的是,尽管myBean 发生了变化(我使用调试器看到了它),但组件并没有更新。我在许多“正常”p:commandButtons 的update 中使用:myComponentId 没有问题。

我正在使用 Mojarra 2.1.7 和 Primefaces 3.4.1,我无法更新软件 :)

【问题讨论】:

  • @JasperdeVries 它也不起作用。
  • ajax="false" 但您在下载完成后尝试使用远程命令进行 AJAX 调用?
  • 这能回答你的问题吗? Update component after file download
  • @MarcoSulla 我测试过,它工作正常......在 PF 7、8、10 上。我猜你的 PF 3.4.1 太旧了,那里有一个错误。再一次,你使用了 8 年以上的库,从那时起已经修复了大量的错误。
  • 是的,我告诉你这是一个已经修复的错误,那么当问题已经解决时,为什么人们还要花时间尝试提供帮助?

标签: jsf primefaces


【解决方案1】:

我最终使用递归函数而不是 PrimeFaces.monitorDownload,它调用 stop() 并检查是否存在更新后应该存在的元素。如果没有,它会使用setTimeout 重新调用自己。一个丑陋的把戏,但它有效。

我希望有人有更清洁的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-02
    • 2013-03-22
    • 2016-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多