a4j:commandLink/reRender, não está funcionando muito bem

4 respostas
P

Pessoal,

Tenho um rich:datatable com um link em um das colunas, ao clicar nesse link eu exibo o conteúdo em um rich:panel

O código

<rich:column>
						<a4j:commandLink value="#{ret.fullName}"
                            reRender="customerInformation" action="#{qbCustomerMB.setCustomerRetSel}"
                            >
                            <a4j:actionparam name="ret" value="#{ret}" />
                        </a4j:commandLink>
                    </rich:column>
                    
                    <rich:panel   id="customerInformation"
                    rendered="#{not empty qbCustomerMB.customerRetSel}">

Só tem um problema, na primeira vez que carrega a página o atributo customerRetSel é nulo,
assim o rich:panel não é exibido, tudo bem, porém quando eu clico no link, ele realmente seta o atributo customerRetSel, testei com o debug ligado, mas o rich:panel não está sendo exibido, o que pode ser?

O mais estranho acontece que se eu der um F5 na página o rich:panel é exibido e ao clicar no links o conteúdo do panel é alterado, ou seja, funciona como era para funcionar.

Como o managed bean está na sessão, quando instanciado pela primeira vez, o atributo customerRetSel do MB era nulo, mas ao ficar clicando setou o customerRetSel que deixou de ser nulo, porém não exibia o rich:panel, mas ao dar F5, o atributo customerRetSel não era mais nulo, ai funcionou o que eu queria, o que pode ser?

Abraços,
Pablo

4 Respostas

D

Cara esperimenta fazer desta maneira…

<a4j:support event="onclick" action="#{sexoBean.Editar}" oncomplete="OpenModal('sexoModalPanel');" reRender="ModalFormSexoForm:idSexo, ModalFormSexoForm:descricao">
          <f:param name="idsexoSelect" value="#{sexoL.idSexo}"/>
</a4j:support>

o atributo oncomplete me ajudou neste caso, pois assim tenho certeza de que o parametro foi setado.

abs,

P

Eu queria usar o oncomplete, mas como eu chamo a função rerender no oncomplete?

D

num dá para chamar no oncomplete…

primeiro por que o oncomplete é para chamar alguma função em javascript após a ação que foi executada e o Rerender é para reinderizar um componente que foi modificado por algum métodos via ajax.

o trecho de código que enviei já faz isso, no oncomplete, você deve chamar o seu modal e o rerender serve para atualizar o conteudo do seu form.

abs,

P

Mas eu não estou exibindo um Modal, e sim um rich:panel, por isso do reRender

&lt;rich:column&gt;
						&lt;a4j:commandLink value="#{ret.fullName}"
                            reRender="customerInformation" action="#{qbCustomerMB.setCustomerRetSel}"
                            &gt;
                            &lt;a4j:actionparam name="ret" value="#{ret}" /&gt;
                        &lt;/a4j:commandLink&gt;
                    &lt;/rich:column&gt;
                    
                    &lt;rich:panel   id="customerInformation"
                    rendered="#{not empty qbCustomerMB.customerRetSel}"&gt;
Criado 26 de agosto de 2008
Ultima resposta 28 de ago. de 2008
Respostas 4
Participantes 2