渲染Primefaces组件后,我无法下载文件

时间:2015-10-29 18:50:35

标签: primefaces

我尝试上传文件,处理它然后下载。我可以上传它,内部过程进展顺利但是当我尝试下载时没有任何反应。

点击上传按钮后,我的下载按钮呈现。如果我不隐藏下载按钮,我可以毫无问题地下载文件。

问题可能在于渲染属性。

XHTML

<p:fileUpload 
    fileUploadListener="#{portabilidadIPTV.upload}"
    allowTypes="/(\.|\/)(xls?x)$/" 
    sizeLimit="100000" 
    description="Seleccione un archivo"
    invalidFileMessage="Tipo de archivo inválido" 
    fileLimit="1"
    messageTemplate="Seleccione un archivo válido"
    label="Elegir archivo"
    uploadLabel="Portar"
    cancelLabel="Cancelar"
    invalidSizeMessage="El tamaño de archivo debe ser menor a 90 KB"
    fileLimitMessage="Sólo puede cargar un archivo"
    update="resultados"/>               

<h:panelGroup id="resultados">
    <p:commandButton 
        value="Descargar" 
        ajax="false" 
        icon="ui-icon-arrowthick-1-s"
        rendered="#{portabilidadIPTV.portabilidadRealizada}">
            <p:fileDownload value="#{portabilidadIPTV.archivoDescargado}" />
    </p:commandButton>
</h:panelGroup>

托管bean

@ManagedBean(name="portabilidadIPTV")
public class PortabilidadIPTV implements Serializable{              

    private static final long serialVersionUID = 1L;

    private UploadedFile archivo;
    private File archivoCargado;            
    private boolean portabilidadRealizada;

    @PostConstruct      
    public void init(){
        setPortabilidadRealizada(false);
    }

    // Download File
    public StreamedContent getArchivoDescargado() {

        File archivo = new File("examplePath"); //some path
        DefaultStreamedContent dsc = null;
        try {
            InputStream stream = new FileInputStream(archivo);
            dsc = new DefaultStreamedContent(stream, "text/plain","Portabilidad_Resultados.xlsx");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return dsc;         
    }


    // Getters & Setters

    public boolean isPortabilidadRealizada() {
        return portabilidadRealizada;
    }

    public void setPortabilidadRealizada(boolean portabilidadRealizada) {
        this.portabilidadRealizada = portabilidadRealizada;
    }       

}

0 个答案:

没有答案