Galerinha… Estou tentando atualizar um dataTable com o ajax do primefaces, mas não está funcionando. Pesquisei aqui no fórum outras formas, mas as que encontrei não resolveram o problema…
1ª Passo.
Tenho um autoComplete, onde ao selecionar um usuário, verifico se já tem algum registro para o mesmo, e atualizo o dataTable com os registros desse usuário. Aqui o dataTable é atualizado sem problema…
<p:autoComplete id="pacienteD" value="#{dietaBean.paciente}" completeMethod="#{agendarConsulta.listaPacientes}" forceSelection="true">
<p:ajax listener="#{dietaBean.onSelectUser}" event="itemSelect" update="hisDietaReg, tKcaldieta, tKcaldieta1" />
</p:autoComplete>
<p:dataTable id="hisDietaReg" var="dietaReg"
lazy="true" value="#{dietaBean.lista}"
emptyMessage="Nenhum Registro Encontrado" paginator="true"
paginatorAlwaysVisible="false" rows="5">
<f:facet name="header">
<h:outputText value="Histórico de Dietas Registradas"/>
</f:facet>
<p:column style="width: 4%">
<p:rowToggler/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Peso (kg)" />
</f:facet>
<h:outputText value="#{dietaReg.peso}"/>
</p:column>
//Outros campos do dataTable
</p:dataTable>
2º Passo.
Ao salvar novos dados para o usuário selecionado, eu chamo novamente um update no dataTable, e ele não atualiza. Se eu atualizar a página com F5, ai o dataTable atualiza normalmente.
<p:commandButton id="btnRegDieta" value="Registrar Dieta"
actionListener="#{dietaBean.save}" ajax="false"
update="hisDietaReg, grolRegDieta"> //Aqui, solicito atualização do dataTable
</p:commandButton>
Tentei algumas soluções que encontrei aqui no fórum, mas até o momento, não consegui resolver…
Tentativas que já, com pesquisa no fórum…
<p:commandButton id="btnRegDieta" value="Registrar Dieta"
actionListener="#{dietaBean.save}" ajax="false"
update="hisDietaReg, grolRegDieta">
<p:ajax update="hisDietaReg" event="click"/> //Colocar outro <p:ajax /> para atualizar o dataTable.
//obs: Fiz essa tentativa com e sem um listener para a mesma função que chamo ao selecionar um usuário.
</p:commandButton>
Tentei forçar um refresh da página página com o seguinte código, postado por um colega do fórum.
public void refresh() {
FacesContext context = FacesContext.getCurrentInstance();
Application application = context.getApplication();
ViewHandler viewHandler = application.getViewHandler();
UIViewRoot viewRoot = viewHandler.createView(context, context.getViewRoot().getViewId());
context.setViewRoot(viewRoot);
context.renderResponse();
}
No método que salva os dados, chamo esse refresh(), mas também não funcionou…
Alguém tem alguma outra dica, para essa “segunda” atualização funcionar?
