2017-11-14 17 views
1

ファイルをダウンロードする必要があるため(h:commandButtonでしかできないため)少し問題がありますが、oncomplete関数が必要です(a4j: commandButton)を実行ステータスにします。 コードのサンプルはこれです:h:commandButton oncomplete関数を使用してファイルをダウンロードする

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

私はすでにBalusCすることにより、この応答のようにそれをやろう: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(); 
    } 
} 

答えて

2

これを解決する方法が見つかりました。 最初に、a4j:commandButtonをクリックするだけで、ajaxリクエストのクリックボタンが表示されます。この部分でファイルが作成されます。

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

このa4j:commandButtonのはdownloadFileButtonボタンをonCompleteのクリックでファイルをダウンロードするだろうという。 作成されたファイルをダウンロードするには、h:commandButtonが必要です。

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

このボタンは非表示になります(スタイル=「表示:なし」)ファイルのダウンロードをトリガするだけですので。

関連する問題