我有一个用户表,我必须选择一个来获取文件列表,以便我可以下载。一切正常但如果我已经下载文件,我尝试再次点击下载我得到 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>