Exibir arquivos selecionados com rich:fileupload

5 respostas
valbercpaulino

Bom dia pessoal,
Estou com o seguinte problema, estou utilzando o rich:fileupload para fazer o upload em minhas páginas, só que se o usuário seleciona o(s) arquivo(s), até aqui os arquivos estão sendo exibidos no componente, mas se o usuário submeter a página e ocorra algum erro (um erro de validação por exemplo) o sistema volta para a tela de upload e o(s) arquivo(s) selecionado(s) pelo usuário somem do componente apesar de ainda estarem carregados na memória, e fica parecendo que o usuário ainda não selecionou nenhum arquivo.
Alguém sabe como posso fazer para exibir os arquivos já selecionados pelo usuário no componente?

5 Respostas

P

O correto é que os métodos chamados no upload sejam todos void para não retornar a nenhuma página…

public void listener(UploadEvent event) {

private void validar(InputStream file) throws ParserConfigurationException, SAXException, IOException {

valbercpaulino

Os métodos chamados são void e mesmo assim após uma validação ele deixa de exibir o que foi adicionado.

P

Você deu rerender no componente?

valbercpaulino

Não to dando rerender no componente não, em um caso tenho que dar rerender mas no formulário inteiro.

P

não precisa renderizar o formulário todo…

coloque seu rich:fileupload dentro de um panel grid

<h:panelGrid columns="2" columnClasses="top,top">
            <rich:fileUpload fileUploadListener="#{meuBean.listener}"
                maxFilesQuantity="#{meuBean.uploadsAvailable}"
                id="upload"
            </rich:fileUpload>
            <h:panelGroup id="info">

             <a4j:commandButton action="#{meuBean.clearUploadData}"
                    reRender="info, upload, lista, paginacao1, paginacao2" value="Limpar" 
                    rendered="#{meuBean.size>0}"
                    
                     />
            </h:panelGroup>

                <a4j:support event="onuploadcomplete" reRender="info, upload, lista, paginacao1, paginacao2"  />
            	<a4j:support event="onclear"  action="#{meuBean.clearUploadData}" reRender="info, lista, paginacao1, paginacao2"/>  
            </rich:fileUpload>
</panelGrid>



<rich:datascroller id="paginacao1" for="lista" reRender="paginacao2" />	
		
		<rich:dataTable id="lista" onRowMouseOver="this.style.backgroundColor='#BDF1FF'" 
		onRowMouseOut="this.style.backgroundColor='#FFF'" 
		value="#{meuBean.listaXml}" var="sl" rows="10" width="100%">
..

	</rich:dataTable>	
		
	<rich:datascroller id="paginacao2" for="lista" reRender="paginacao1" />

se possivel deixe o action no final da página… renderizando apenas se o usuário enviou o arquivo…

<h:panelGrid  rendered="#{meuBean.size>0}">		
	<h:commandButton action="#{meuBean.salvarXML}" value="Salvar"	 />
	</h:panelGrid>
Criado 25 de janeiro de 2011
Ultima resposta 26 de jan. de 2011
Respostas 5
Participantes 3