Как использовать потоковое содержимое с p: fileDownload для загрузки файла без пути к классу

Я использую Primefaces

р: FileDownload

скачать файл, который не находится в пути к классам.
Так что я прохожуFileInputStream в качестве параметра дляDefaultStreamedContent.
Все работает нормально, когда мой бин хранится в@SessionScoped...,
Но

java.io.NotSerializableException: java.io.FileInputStream

брошен, когда я держу свой боб в@Viewscoped.

Мой код:

DownloadBean.java

@ManagedBean
@ViewScoped
public class DownloadBean implements Serializable {

    private StreamedContent dFile;

    public StreamedContent getdFile() {
        return dFile;
    }

    public void setdFile(StreamedContent dFile) {
        this.dFile = dFile;
    }

    /**
     * This Method will be called when download link is clicked
     */
    public void downloadAction()
    {
        File tempFile = new File("C:/temp.txt");
        try {
            dFile = new DefaultStreamedContent(new FileInputStream(tempFile), new MimetypesFileTypeMap().getContentType(tempFile));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }

}

index.xhtml

<h:form>
    <h:commandLink action="#{downloadBean.downloadAction}">
        Download
        <p:fileDownload value="#{downloadBean.dFile}"/>
    </h:commandLink>
</h:form>

Нет ли способа заставить его работать?

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

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