Стратегия для p: fileDownload с диалогом и статусом загрузки - PullRequest
1 голос
/ 02 февраля 2012

Стратегия для p:fileDownload с диалогом с загрузкой

Я пытаюсь сделать панель загрузки после начала загрузки файла. Моя кнопка загрузки выглядит так:

<p:commandButton id="btnFirstType"
            styleClass="bt_princ"
             value="Download File"
             onclick="loading.show()"
             ajax="false">
    <p:fileDownload value="#{mbean.myFile}"/>
</p:commandButton>

<p:dialog modal="true" 
          widgetVar="loading" 
          header="Status"   
          draggable="false" 
          closable="false">  
        <p:graphicImage value="/loading.gif" />  
</p:dialog>

А мой MBean такой:

public StreamedContent getMyFile(){
     return this.getReport(Type.CSV); //I assure this works, debugged...
}

Проблема в том, что после нажатия кнопки загрузки, если я запускаю диалог загрузки, загрузка не происходит. Я думал об использовании p:poll для проверки логической переменной, чтобы я знал, когда файл был сгенерирован, чтобы я мог показать диалоговое окно после нажатия кнопки (например, установка setTimeout с JavaScript), но это Может быть, моя ошибка в том, как все это происходит. Любое другое предложение?

PS1: опрос перестает работать после загрузки файла, поэтому я не буду знать, когда закрыть диод

PS2: я использую Primefaces 2.2 и не могу обновить.

PS3: Обнаружено это обходной путь, но «оно будет» в версии 3, поэтому я не могу его использовать.

1 Ответ

1 голос
/ 03 февраля 2012

Я сделал то же самое, что предложено в обходе, опубликованном на мой вопрос.Я загрузил исходные тексты из моей версии, изменил класс FileDownloadActionListener, добавил файлы cookie в объект ответа и на своей странице только что запустил процесс с setTimeout, который будет проверять файлы cookie каждые 100 миллисекунд, а когда найдет его, удалите его.

...