dinâmica RichFaces dataTable, Ajax4jsf e rerendering
Pergunta
Eu tenho uma rica dataTable que é definido dentro de um a4j: outputPanel, e que está vinculado a um bean de apoio escopo de sessão que cria a HtmlDataTable. Por si só, essa parte do meu código está funcionando bem, e os olhares dataTable bom.
Em outra parte da página, há alguns links de texto básicos que eu estou criando como a4j: commandLinks, e quando aqueles são clicados, o dataTable deve ser re-rendido com novos dados de linha e coluna. A multa atualizar dados de linha 's, mas os dados da coluna (texto de cabeçalho, largura, etc.) não é.
Depois de cavar em torno do código para um pouco, parece que a chamada para o bean de apoio para o HtmlDataTable não está sendo feita durante o rerendering dessa tabela, mas é rerendered se toda a página é recarregada; por isso parece que é apenas o Ajax4jsf / porção rerendering que está me mordendo aqui.
Existe alguma maneira que eu possa forçar o processo rerender para invalidar a estrutura dataTable para que ele irá chamar o bean de apoio novamente para ele?
Se isso significa alguma coisa, eu também estou usando Seam; por isso, se há uma solução a ser encontrada usando-o, isso seria útil, também.
Obrigado!
Solução
Para bem da posteridade, eu encontrei a solução: Sempre que o pedido a4j é feita para a minha ação de feijão ouvinte, eu tenho que dizer ao feijão-construção dataTable para lavar a sua mesa. Isso feijão, em seguida, faz um myDataTable.getParent simples (). GetChildren (). Remove (myDataTable). Esta página me ajudou a descobrir isso: http: // www. coderanch.com/t/213312/JSF/java/dynamic-datatable-binding .
Outras dicas
Na sua acção apenas remover a sessão bean com escopo de seus contextos.
Por exemplo:
<a:commandLink action="#{someBean.perform}" value="Submit" reRender="myTable"/>
e a ação:
@Name("someBean")
public class SomeBean {
public void perform() {
//do stuff
Contexts.removeFromAllContexts("myBean");
}
}
Othewrwise se o dataTable é preenchida com uma lista, então provavelmente é tão fácil como apenas chamar a busca () ou qualquer método que carrega os dados.