代码之家  ›  专栏  ›  技术社区  ›  Jorge Rocha

h: 具有oncomplete功能的commandButton并下载文件

  •  1
  • Jorge Rocha  · 技术社区  · 6 年前

    我有一个小问题,因为我需要下载一个文件(为此我只能使用h:commandButton),但我需要oncomplete函数(仅适用于a4j:commandButton)来显示运行状态。 代码示例如下:

     <h:commandButton
            id="downloadReportButton"
            action="#{reportingBean.createAndDonwloadFile()}"               
     />
    

    我已经试着在巴卢斯的回复中这样做了: https://stackoverflow.com/a/31267418/1777424 但问题在于Ajax请求无法执行。

    <h:commandButton
            id="downloadReportButton"
            action="#{reportingBean.createAndDonwloadFile()}"/>
            <f:ajax onevent="oneventFunction" />
     </h:commandLink>
    
    function oneventFunction(data) {
        if (data.status === "success") {
            oncompleteFunction();
        }
    }
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Jorge Rocha    6 年前

    我找到了解决这个问题的方法。 首先需要有一个 只需在ajax请求中单击按钮。在这一部分中,将创建文件。

    <a4j:commandButton
        id="createFileButton"
        onclick="showLoading();"
        action="#{reportingBean.createFile()}"
        oncomplete="hideLoading(); #rich:element('downloadFileButton')}.click();"
    />
    

    此a4j:commandButton将在oncomplete中单击 下载文件按钮 下载文件的按钮。 然后需要有一个h:command按钮来下载已经创建的文件。

    <h:commandButton
        id="downloadFileButton"
        action="#{reportingBean.downloadFile()}"
        style="display:none"
    />
    

    此按钮将隐藏( )因为只是为了触发文件的下载。