gpt4 book ai didi

jsf - JS 功能未通过 PrimeFaces.monitorDownload 触发

转载 作者:行者123 更新时间:2023-12-04 21:56:54 31 4
gpt4 key购买 nike

我正在使用 进行文件下载Primefaces 4.0 .我只想在下载完成时触发一个 JS 函数,但似乎不起作用(在 Firefox 和 Google Chrome 中尝试过)。我的测试用例看起来与 PF docs 中所做的相似:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head />

<h:body>
<script type="text/javascript">
function startMessage() {
alert("Download started!");
}
function finishMessage() {
alert("Download finished!");
}
</script>
<h:form>
<p:commandButton value="Download" ajax="false"
icon="ui-icon-arrowreturnthick-1-s"
onclick="PrimeFaces.monitorDownload(startMessage, finishMessage)">
<p:fileDownload value="#{bean.file}" />
</p:commandButton>
</h:form>
</h:body>
</html>

@ManagedBean
@ViewScoped
public class Bean implements Serializable {

public StreamedContent getFile() {
return new DefaultStreamedContent(new ByteArrayInputStream(new byte[0]));
}

}

该警报在下载开始时触发,但在下载完成时不会触发。其他人可以试一试吗?

最佳答案

这是一个 bug .

主要错误在 FileDownloadActionListenerorg.primefaces.component.filedownload包裹。

65号线

externalContext.addResponseCookie(Constants.DOWNLOAD_COOKIE, "true", Collections.<String, Object>emptyMap());
Constants.DOWNLOAD_COOKIE是“primefaces.download”,它永远不会与响应一起发送。

那会导致 PrimeFaces.monitorDownload的间隔永远不会调用停止函数,因为永远不会写入 cookie。

关于jsf - JS 功能未通过 PrimeFaces.monitorDownload 触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20663551/

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