Pessoal, em uma página tenho um a4j:repeat iterando um dataModel
para cada linha eu tenho um commandLink que tem um rendered com uma condição, chamando um método que precisa ir no banco verificar alguma coisa.
Quando em uma linha, clico neste commandLink, eu peço para renderizar apenas a propria linha para que outro commandLink apareca no lugar do antigo.
Acontece é que o método é chamado mais de 10 vezes, sendo que na pagina soh tem duas referencias para o mesmo, com isso a consulta no banco pela mesma coisa acontece muitas vezes.
Como posso evitar isso ?
Exemplo:
View
<a4j:repeat value="avisoAtividadeController" var="item">
<a4j:outputPanel id="row">
<h:outputText value="#{item.autor.nomeExibicao}"/>
<a4j:commandLink id="starred" rendered="#{avisoAtividadeController.avisoFavoritado}" action="#{avisoAtividadeController.favoritarAvisoLinha}" reRender="starred,unstarred"/>
<a4j:commandLink id="unstareed" rendered="#{!avisoAtividadeController.avisoFavoritado}" action="#{avisoAtividadeController.desfavoritarAvisoLinha}" reRender="starred,unstarred"/>
</a4j:outputPanel>
</a4j:repeat>
Controller
public class AvisoAtividadeController {
...
...
public String favoritarAvisoLinha(){
AvisoAtividadeContato aviso = (AvisoAtividadeContato) dataModel.getRowData();
// insert no banco
}
public String desfavoritarAvisoLinha(){
AvisoAtividadeContato aviso = (AvisoAtividadeContato) dataModel.getRowData();
// delete no banco
}
public boolean isAvisoFavoritado(){
AvisoAtividadeContato aviso = (AvisoAtividadeContato) dataModel.getRowData();
...
// consulta banco
return true/false;
}
}
só existem duas referencias no jsp pro isAvisoFavoritado, porém é chamado mais de 7 a 14 vezes cada linha