Problema File Upload JSF

Estou utilizando este código para fazer upload de arquivos, ele funciona, porém o estranho é que após adicionar o arquivo ele não aparece imediatamente na lista de arquivos adicionados, eu tenho que dar refrash na tela (F5) para aparecer o item na lista(data table)… alguém sabe como corrigir isso?

<h:panelGroup id=“info”>
<rich:panel bodyClass=“info”>
<rich:fileUpload
fileUploadListener="#{orcamentoBean.adicionarArquivo}"
noDuplicate=“false” id=“upload” immediateUpload=“true”
listHeight=“0px” listWidth=“321px”>
<a4j:support event=“onuploadcomplete”
reRender=“global, grid, info” />
</rich:fileUpload>

                            <f:facet name="header">
                                <h:outputText value="Arquivos carregados" />
                            </f:facet>

                            <a4j:region>
                                <rich:dataTable value="#{orcamentoBean.files}" var="orcamento"
                                    rows="5" rowKeyVar="row" id="table">
                                    <a:column id="arquivo" coluna="#{orcamento.descricaoDocumento}"
                                        titulo="Nome do Arquivo" tipo="normal"></a:column>

                                </rich:dataTable>
                            </a4j:region>

                        </rich:panel>
 </h:panelGroup>

Você tem que popular a tua lista com o novo elemento e depois sim fazer o refresh da tabela!

public String adicionarArquivo(UploadEvent event) throws Exception {
UploadItem item = event.getUploadItem();
String sufixo = this.orcamentoBusiness.obterFileInfo(item);
File file = item.getFile();

	SgpOrcamentoDocumento sgpOrcamentoDocumento = this.orcamentoBusiness.setArquivoNoOrcamentoDocumento(file, sufixo);

	files.add(sgpOrcamentoDocumento);

	return "novaOrcamento";

}

veja que eu já faço isso, aquela instrução files.add(); faz exatamente isso, ela popula a lista para o qual minha dataTable aponta… porém ela simplesmente não re-renderiza novamente… eu tenho que apertar F5 pra renderizar…

vou chegar ao ponto de fazer uma gambiarra com javascript :cry:

não teria que fazer o reRender para a id table também ???

sim sim ja testei isso mas não funcionou =/

UP

O JSF ele tem um esquema de id meio estranho, veja quais são os ids da tua tabela e do teu panel após o html ter sido gerado, pegue esse ID e use no reRender do a4j:support pode ser que os ids não estejam batendo!

Acabo de verificar, eles estão com id… algo assim: id=“form:table” id=“form:panel” etc

engraçado isso kra, as vezes ele atualiza a datable, outras não :cry: e apertando f5 funciona… to pensando em fazer algum javascript loco pra resolver isso… visto que esses componentes são bugados!

Não estão bugados, a implementação da apache para o JSF (o myfaces) possui um atributo forceIndex, daí o id não é mais gerado pelo framework e sim por você, o que facilita bastante!

não seria o forceId do tomahawk?

eu não utilizo tomahawk na minha aplicação… estou utilizando apenas jsf core e richfaces

Isso eu me confundi com o atributo!

Estou querendo fazer a mesma coisa que o AndreMayer.
Alguem tem uma solução pra dar refresh na tela, depois que o arquivo do upload é enviado???
t+

Cara tenta usar <a4j:support event=“onuploadcomplete” reRender=“seu id do painelgroup”/>