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?
Exibir arquivos selecionados com rich:fileupload
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 {
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?
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
Alura POO: o que é programação orientada a objetos? Aprenda os conceitos básicos da programação orientada a objetos, como classes, objetos, herança, encapsulamento e polimorfismo, com exemplos.
Casa do Codigo JavaScript Assertivo: Testes e qualidade de codigo em... Por Gabriel Ramos — Casa do Codigo