quarta-feira, 5 de setembro de 2007

Atualizando componentes com actionListeners

Esse é um assunto que eu devo ter demorado uns 3 dias para descobrir como fazia.

O meu problema era: Eu tinha dois faces com componentes diferentes e eu simplesmente não conseguia colocar partialTriggers nos componentes (que estavam em facets separados).

O jeito foi então, colocar um ActionListener (ou um SelectionListener, dependendo do componente) e pelo actionListener forçar a atualização pelo código... mas como fazer?

Exemplo do componente:

<af:commandButton text="Botao atualizavel" actionnListenter="#{managedBeanTest.processAction}"

Já o componente que vai ser atualizado, é colocado normalmente na pagina jspx -- a única diferença é que você terá que bindar o componente pai (o painelLayout ou qualquer outro) e o componente que vai ser atualizado no managedBean.

o código do proccessAction é mais ou menos assim:

public void proccessAction(ActionEvent event){
//componente a ser atualizado
outputText.setValue("Esse componente foi atualizado via codigo!");
//parentComponet = componente pai
AdfFacesContext.getCurrentInstance().addPartialTarget(parentComponet);
}



O único truque é pegar a instanciá do adffaces e adicionar o componente pai para ser atualizado. =D
(Eu tentei colocar o componente diretamente, mas não deu certo =( )

Lembrando de colocar o componente que vai ativar a atualização como partialSubmit=true para que não haja um refresh total da página.

Nenhum comentário: