Метод p: fileDownload вызывается, но загрузка файла не отображается

Здравствуйте, я делаю выгрузку и загрузку файлов с использованием JSF и Primefaces.

Я использую методы из разных форумов и блогов вместе (блог BelusC и Primefaces Showcase).

Основная идея этой операции состоит в том, чтобы позволить пользователю загрузить файл и сгенерировать ссылку на скачивание для загруженного файла, чтобы он мог загрузить и просмотреть его перед отправкой.

Вот мой код:

index.xhtml

<h:form>
    <p:fileUpload showButtons="false" label="Attach Refrral" 
        auto="true" fileUploadListener="#{fileBean.uploadListener}"/>
</h:form>

<h:form >
   <p:commandLink>
      See Uploaded File
      <p:fileDownload value="#{fileBean.refrralFile}"/>
   </p:commandLink>
</h:form>

FileBean.java

private StreamedContent refrralFile;


    public void uploadListener(FileUploadEvent evt)throws Exception
    {
        UploadedFile fx = evt.getFile();

        File mainDir = new File("C:/","fileStorage");
        if(!mainDir.exists())
        {
            mainDir.mkdir();
        }
        File subDir = new File(mainDir,"AttachedRefrrals");
        if(!subDir.exists())
        {
            subDir.mkdir();
        }
        String fileName = fx.getFileName();

        File f = new File(subDir,fileName);
        FileOutputStream fos = new FileOutputStream(f);
        IOUtils.copy(fx.getInputstream(), fos);

        InputStream is = ((ServletContext)FacesContext.getCurrentInstance().getExternalContext().getContext()).getResourceAsStream(f.getAbsolutePath());
        refrralFile  = new DefaultStreamedContent(is, new MimetypesFileTypeMap().getContentType(f), fileName);

    }


    public StreamedContent getRefrralFile() {
        return refrralFile;
    }

Использование приведенного выше кода Файл загружается успешно, но если я нажму на ссылку для скачивания файла, появится исключение:

java.lang.IllegalStateException: getOutputStream() has already been called for this response

я использовалFacesContext # responseComplete ()Как было предложено во многих местах, теперь ссылка для скачивания не работает вообще.

Пожалуйста, исправьте меня, если я ошибаюсь в моей технике или коде, и предложите лучший способ, если вы знаете.

Ответы на вопрос(1)

Ваш ответ на вопрос