FileDownload Primefaces错误Stream Closed

时间:2016-05-21 18:45:50

标签: jsf primefaces

我有一个用户表,我必须选择一个来获取文件列表,以便我可以下载。一切正常但如果我已经下载文件,我尝试再次点击下载我得到 java.io.IOException:Stream Closed ,但如果我下载文件并再次选择用户获取我可以下载文件的文件列表。

问题是我不能多次下载而不必选择用户并获取文件列表。

当我选择用户获取文件列表时,这就是我获取文件的方式。

public void obtenerRequisitos() {

    try {
        archivos = new ArrayList<>();
        lstArchivos = new ArrayList<>();
        if (SelectedInscripcion != null) {
        lstArchivos = d.getArchivosInscripciones(String.valueOf(SelectedInscripcion.getId()));

        for (Archivos a : lstArchivos) {
            InputStream input = new FileInputStream(a.getRuta());
            String extension = a.getRuta().substring(a.getRuta().lastIndexOf('.'));
            file = new DefaultStreamedContent(input, a.getRequisitosPromo().getRequisitos().getTipoArchivo(), a.getRequisitosPromo().getRequisitos().getFormato() + extension);
            archivos.add(new ClsArchivos(a.getRequisitosPromo().getRequisitos().getDescripcion(), file));
        }
    }
    } catch (Exception ex) {
        Logger.getLogger(AsignarEntrevistaBean.class.getName()).log(Level.SEVERE, null, ex);

    }

}   

这是我用来存储文件列表的类

    public class ClsArchivos implements Serializable{

    private String descripcion;
    private StreamedContent file;

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public StreamedContent getFile() {
        return file;
    }

    public void setFile(StreamedContent file) {
        this.file = file;
    }

    public ClsArchivos() {
    }

    public ClsArchivos(String descripcion, StreamedContent file) {
        this.descripcion = descripcion;
        this.file = file;        
    }  
}  

这是xhtml的一部分,其中filedownload是

<p:dataTable style="margin-bottom: 25px;" id="requisitos" value="#{asignarEntrevistaBean.archivos}" var="a">
                <f:facet name="header">
                    Listas de Requisitos por Solicitud
                </f:facet>
                <p:column headerText="Descripcion">
                    <h:outputText value="#{a.descripcion}" />
                </p:column>
                <p:column headerText="Archivos">
                    <p:commandButton   value="Download" ajax="false"  icon="ui-icon-arrowthick-1-s">
                        <p:fileDownload value="#{a.file}" />
                    </p:commandButton>
                </p:column>                    
            </p:dataTable>

0 个答案:

没有答案