Pessoal, não estou conseguindo carregar dados em um dialog que é aberto quando clico em um link e o mesmo deveria mostrar os itens.
Ja debuguei e os registros estao carregando certinho no MB mas o dialog abre em branco não atualiza.
Ja tentei varias formas, como o comando update e não consegui.
Alguem pode me ajudar,
obrigado.
poste o código ai, fica mais fácil
sem o codigo fica dificil… mas provalvemente vc tá esquecendo de dar um update no dialog…XD
pagina.jsf
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui"
template="templateLayout.xhtml">
<ui:define name="content">
<f:view>
<link href="#{facesContext.externalContext.requestContextPath}/styles.css" rel="stylesheet" type="text/css"/>
<meta name="robots" content="noindex,follow"/>
<br/><br/>
<h:form id="formReceitaTrans" >
<p:panel id="panelGridReceita" header="F.C. Barcelona" footer="Visca el Barca!">
...........
............
<p:commandLink
id="botaoEmpenhos7"
title="Mostrar Itens"
action="#{receitaBackTrans.listarItensReceita(receita)}"
update=":frmModal"
oncomplete="dlg2.show();">
<h:outputText value="#{receita.qtdeLancamentos}" />
</p:commandLink>
</p:panel>
</h:form>
<h:form id="frmModal">
<p:dialog id="modalDialog2" header="Modal Dialog" widgetVar="dlg2" modal="true" height="100">
<h:outputText value="This is a Modal Dialog. 6" />
<h:form id="formPanelEmpenhosTrans55">
<h:dataTable id="formReceitaTrans0233"
value="#{receitaBackTrans.receita.itensReceita}"
var="item"
cellpadding="4"
cellspacing="1.5"
rowClasses="linhaImpar,linhaPar"
headerClass="header"
styleClass="dataTables">
<h:column id="formReceitaTrans02133">
<f:facet name="header" id="formReceitaTrans02332">
<h:outputText value="Ficha" id="formReceitaTrans02333"/>
</f:facet>
<h:outputText value="#{item.numLancamento}" />
</h:column>
</h:dataTable>
</h:form>
</p:dialog>
</h:form>
</f:view>
</ui:define>
</ui:composition>
MB
public void listarItensReceita(Receita receita) {
int codEnt = 1;
receita.setItensReceita(new ArrayList<LancReceita>());
Connection conexao;
try {
conexao = ConnectionFactory.getConnection();
StringBuilder sb = new StringBuilder("SELECT ");
sb.append(" CONCAT(L.LREC_NUM,'/', L.LREC_EXERCICIO) AS NUMLANCAMENTO, ");
sb.append(" L.LREC_DATA, ");
sb.append(" L.LREC_VALOR, ");
sb.append(" L.LREC_HISTORICO ");
sb.append(" FROM LANCRECEITA_CONT L ");
sb.append(" WHERE L.LREC_IDENT = " + codEnt);
sb.append(" AND L.LREC_NUMFICHA = " + (receita.getNumFicha() == null ? "0" : receita.getNumFicha()));
sb.append(" AND L.LREC_TIPOFICHA = " + (receita.getTipoFicha() == null ? "0" : receita.getTipoFicha()));
sb.append(" AND L.LREC_EXERCICIO = " + (receita.getExercicioFicha() == null ? " 2012 " : receita.getExercicioFicha()));
sb.append(" ORDER BY NUMLANCAMENTO");
PreparedStatement stmt = conexao.prepareStatement(sb.toString());
ResultSet rs = stmt.executeQuery();
LancReceita c = null;
while (rs.next()) {
c = new LancReceita();
c.setNumLancamento(rs.getString("NUMLANCAMENTO"));
c.setDataLancamento(rs.getString("LREC_DATA"));
c.setValorLancamento(rs.getString("LREC_VALOR"));
c.setHistorico(rs.getString("LREC_HISTORICO"));
receita.getItensReceita().add(c);
}
} catch (SQLException ex) {
Logger.getLogger(ReceitaBacking.class.getName()).log(Level.SEVERE, null, ex);
} finally {
System.out.println("Qtde Items: " + receita.getItensReceita().size());
}
}
um form dentro de outro
não precisa disso
apenas deixe o form que está dentro do dialog
lembre de modificar seu update colocando o nome
do outro form
tirei o primeiro form do dialog e mudei o update do commandLink para formPanelEmpenhosTrans55 porem continua não trazendo os registros.
debuguei novamente e quando clico no comandLink carregar certinho os dados porem não mostra no dialog.
estou preso nesse problema faz tempo…
Obrigado
Alguem ja usou um dialog do PrimeFaces para mostrar dados ?
Sera que é um erro do componente de não atualizar,
Estou travado nisso, por favor uma luz…
Obrigado
Calma velho ‘-’
Ta vendo isso ?
<p:commandLink
id="botaoEmpenhos7"
title="Mostrar Itens"
action="#{receitaBackTrans.listarItensReceita(receita)}"
update=":frmModal"
oncomplete="dlg2.show();">
Faz um debug e ve se ele ta entrando nesse metodo e com os valores preenchidos, de qualquer forma vou lhe dar uma ideia.
nesse seu commandLink voce poe no action um metodo void, que nao receba parametros. E tambem poderia po no update assim, update=":formModal:modalDialog2:formPanelEmpenhosTrans55:formReceitaTrans0233"
La no metodo void, no seu bean, voce pega sua lista e da valor a ela. exemplo:
Digamos que ao clicar no commandLink voce executa o metodo listarItensReceita, dentro do metodos listarItensReceita voce faria assim
public void listarItensReceita() {
this.listaItens = this.metodoquepegaalistadobanco
}
E la no seu datatable, voce chamaria a variavel lista:
<p:datatable.... value:"#{seuBean.listaItens}"
deu erro, duplicou o post.
Aaaaa, so pra constar, eu tava com esse problema uma vez, tb to começando agora em JSF + Primefaces, mas hoje ja sei como resolver a bronca. Simplesmente crie uma variavel lista no seu bean, e trabalhe com ela.
Deu certo! passei a trabalhar com a variavel lista e funcionou.
Quero agradecer aqui todos amigos que contribuiram.
Muito Obrigado!
Edite seu topico acrescentando a palavra resolvido, caso tenha solucionado seu problema =D
Vlw!