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!

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top