Problema com rendered! Aplicação muito lenta

Boa tarde galera, estou com um problema terrivel com o rendered. Pois gostaria que ele SOMENTE fizesse a verificação de renderizar o componente ou nao, na primeira vez que acessa a página. O problema que ele chama o método do rendered toda vez que executa qualquer ação na tela. Se clica em um campo, o método do rendered é chamado, se clico em um checkbox o método do rendered é chamado. E não quero isso , pois o método realiza várias funções e está deixando a aplicação lenta.
Quando removo este rendered por exemplo, tudo ocorre perfeitamente. Ja utilizei as tags <c:if > e <c:when: com <c:otherwise> , ela é executada apenas uma vez , mas o problema que os radio não sao marcados = (.


 <rich:dataTable id="filho" width="100%" value="#{Page.listaT429}" var="t429" rowClasses="row,rowEven" rowKeyVar="key" >
                     <h:column style="text-align:left">
                        <a4j:outputPanel>
                           <!-- Pergunta  -->
                           <h:panelGrid id="pergunta" >
                              <t:outputText value="&#160;#{key +1} )#{t429.c42903} " style="font-weight:bold"></t:outputText>
                              <a4j:repeat value="#{Page.mapPerguntas.get(t429)}" var="t430">
                               
                                 <h:panelGrid id="menu" columns="2" rendered="#{Page.pegaOpcao(t429,t430,Page.detail) == true}"  >
                                    <input type="radio" name="#{t430.c43003.c42903}" checked="true" />
                                    <t:outputText style="font-weight:bold" value="#{t430.c43005} - #{t430.c43008}"></t:outputText>
                                    <a4j:support event="onclick" action="#{Page.atualizaResposta(t430,t429)}" />
                                 </h:panelGrid>
                            
                                <h:panelGrid id="menu2" columns="2" rendered="#{Page.pegaOpcao(t429,t430,Page.detail) == false}">
                                    <input type="radio" name="#{t430.c43003.c42903}"/>
                                    <t:outputText style="font-weight:bold" value="#{t430.c43005} - #{t430.c43008}"></t:outputText>
                                    <a4j:support event="onclick" actionListener="#{Page.atualizaResposta(t430,t429)}"  />
                                 </h:panelGrid>
                              </a4j:repeat>
                           </h:panelGrid>
                           
                        
                        </a4j:outputPanel>
                     </h:column>
                  </rich:dataTable>

Grato

Não teria como deixar isso em uma varíavel temporária?

Coloca logo após o a4j:repeat, isso vai evitar de chamar o método 2 vezes:

JSF 1.x:

JSF 2.x:

E no rendered:

e:

Pelo que percebi o método pegaOpcao, recebe o objeto da linha, então acho que não pode ser chamado apenas 1 vez, tem que ser para cada item.
O que você pode fazer é tentar otimizar esse método Page.pegaOpcao, para torná-lo menos lento.

Olá ayslanms, obrigado pela resposta, mas não funcionou.

Utilizando as tags <c:set continua do mesmo jeito, chamando o método toda vez.

Qual é o problema:
-Eu tenho várias perguntas,e cada pergunta tem várias opções de resposta.
-Preciso verificar se o usuário preencheu tal opção, se sim, marcar o checkbox.

Coloquei um breakpoint no método e percebi que as vezes o método é chamado mais de 90x…

Mas você tem um a4j:repat dentro de um dataTable, então esse método vai ser chamado essa quantidade de vezes, segundo a lógica que você fez. Talvez você deva mudar a lógica.

Este é o problema…

Meu dataTable é um lista de PERGUNTAS, e o meu a4j é das OPÇÕES dessa PERGUNTA.

Se este meu método nao fosse chamado toda vez que faço qualquer outra coisa na tela, estava ótimo, o problema se clico em qualquer coisa, ele chama este método.