h:commandButton 具有 oncomplete 功能并下载文件
h:commandButton with oncomplete function and download a file
我有一个小问题,因为我需要下载一个文件(为此我只能使用 h:commandButton)但我需要 oncomplete 函数(只适用于 a4j:commandButton)出现运行 状态。
代码示例是这样的:
<h:commandButton
id="downloadReportButton"
action="#{reportingBean.createAndDonwloadFile()}"
/>
我已经在 BalusC 的回复中尝试这样做了: 但问题是因为 Ajax 请求没有执行。
<h:commandButton
id="downloadReportButton"
action="#{reportingBean.createAndDonwloadFile()}"/>
<f:ajax onevent="oneventFunction" />
</h:commandLink>
function oneventFunction(data) {
if (data.status === "success") {
oncompleteFunction();
}
}
我找到了解决这个问题的方法。
首先需要有一个 a4j:commandButton 才能让点击按钮带有 ajax 请求。在这部分将创建文件。
<a4j:commandButton
id="createFileButton"
onclick="showLoading();"
action="#{reportingBean.createFile()}"
oncomplete="hideLoading(); #rich:element('downloadFileButton')}.click();"
/>
此 a4j:commandButton 将在完成后单击 downloadFileButton 按钮下载文件。
然后需要有一个h:commandButton来下载已经创建的文件。
<h:commandButton
id="downloadFileButton"
action="#{reportingBean.downloadFile()}"
style="display:none"
/>
这个按钮将被隐藏 (style="display:none") 因为它只是为了触发文件的下载。
我有一个小问题,因为我需要下载一个文件(为此我只能使用 h:commandButton)但我需要 oncomplete 函数(只适用于 a4j:commandButton)出现运行 状态。 代码示例是这样的:
<h:commandButton
id="downloadReportButton"
action="#{reportingBean.createAndDonwloadFile()}"
/>
我已经在 BalusC 的回复中尝试这样做了:
<h:commandButton
id="downloadReportButton"
action="#{reportingBean.createAndDonwloadFile()}"/>
<f:ajax onevent="oneventFunction" />
</h:commandLink>
function oneventFunction(data) {
if (data.status === "success") {
oncompleteFunction();
}
}
我找到了解决这个问题的方法。 首先需要有一个 a4j:commandButton 才能让点击按钮带有 ajax 请求。在这部分将创建文件。
<a4j:commandButton
id="createFileButton"
onclick="showLoading();"
action="#{reportingBean.createFile()}"
oncomplete="hideLoading(); #rich:element('downloadFileButton')}.click();"
/>
此 a4j:commandButton 将在完成后单击 downloadFileButton 按钮下载文件。 然后需要有一个h:commandButton来下载已经创建的文件。
<h:commandButton
id="downloadFileButton"
action="#{reportingBean.downloadFile()}"
style="display:none"
/>
这个按钮将被隐藏 (style="display:none") 因为它只是为了触发文件的下载。