Preciso enviar como parametro o valor de uma coluna do meu dataTable da pagina principal para meu Bean, filtrar na query da minha classe Dao e retornar para o atributo atendimento_retorno da lista details( variaveis do meu Bean). Para um pop-up com outro datatable que seja carregado, porém ele está vindo null e não entendo porque já pesquisei, tentei usar dialog e pedi para imprimir em alguns pontos para identificar até onde o parametro está chegando, notei que está indo até a classe Dao o valor, o problema parece estar no list. Segue abaixo o meu código se alguém puderem dar uma olhada…
Pagina Principal
<h:form id="form">
<p:growl id="msgs" showDetail="true" />
<p:dataTable id="tbpanel" var="panel" value="#{ContaBean.lista_contas}" style="font-size:11px;max-width:1100px" scrollable="true" scrollHeight="250">
<f:facet name="header" style="font-size:16px">
Over clinic
</f:facet>
<p:column headerText="Atendimento" >
\\ Esse é o valor estou passando
<center><h:outputText value="#{panel.atendimento}"/></center>
</p:column>
<p:column headerText="Paciente">
<h:outputText value="#{panel.paciente}"/>
</p:column>
<p:column headerText="Operadora">
<h:outputText value="#{panel.convenio}"/>
</p:column>
<p:column headerText="Leito">
<h:outputText value="#{panel.leito}"/>
</p:column>
<p:column headerText="Unidade Internacao">
<h:outputText value="#{panel.unid_internacao}"/>
</p:column>
<p:column headerText="Dias Internado">
<center><h:outputText value="#{panel.dias_internado}"/></center>
</p:column>
// Aqui onde disparo o metodo para enviar o parametro
<p:column style="width:32px;text-align: center">
<p:commandButton icon="ui-icon-search" title="View" ajax="false" action="#{panel.envia_atendimento}" onclick="showMyPage();" process="@this">
// Aqui onde envio o parametro
<f:param value="#{panel.atendimento}" name="form"/>
</p:commandButton>
</p:column>
</p:dataTable>
</h:form>
Metodo do meu Bean que envio o paramentro
public class Conta implements Serializable{
private static final long serialVersionUID = 1L;
private Integer atendimento;
private Integer atendimento_retorno;
private List<Conta>lista_contas;
private List<Conta>details;
private Conta conta;
@PostConstruct
public void init(){
this.setConta(new Conta());
}
// Envio do parametro para Classe Dao
public void envia_atendimento(){
this.details=new DaoConta().parcial_guias(this.atendimento);
System.out.println("\n\nAtendimento enviado —> “+this.atendimento_retorno+”\nLista: "+this.details);
}
public Integer getAtendimento() {
return atendimento;
}
public void setAtendimento(Integer atendimento) {
this.atendimento = atendimento;
}
public Integer getAtendimento_retorno() {
return atendimento_retorno;
}
public void setAtendimento_retorno(Integer atendimento_retorno) {
this.atendimento_retorno = atendimento_retorno;
}
public Conta getConta() {
return conta;
}
public void setConta(Conta conta) {
this.conta = conta;
}
public List getDetails() {
return details;
}
public void setDetails(List details) {
this.details = details;
}
public List getLista_contas() {
// Aqui está retorno para o dataTable da pagina principal, sem erro carrega normalmente
lista_contas=new DaoConta().parcial_panel();
return lista_contas;
}
public void setLista_contas(List lista_contas) {
this.lista_contas = lista_contas;
}
}
Minha Classe Dao
package overclinic.com.br;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class DaoConta {
public List`<Conta>` parcial_panel(){
Conexao con = new Conexao();
Connection conexao = con.conecta();
List<Conta> listaContas = new ArrayList<Conta>();
ResultSet res=null;
Statement stm = null;
String sql="SELECT ATE.CD_ATENDIMENTO AS CD_ATENDIMENTO,C.NM_CONVENIO,PAC.NM_PACIENTE,LEI.DS_LEITO,UNI.DS_UNID_INT,ATE.DT_ATENDIMENTO,FLOOR((SYSDATE-ATE. DT_ATENDIMENTO)) DIAS_INTERNADO,CASE WHEN TO_CHAR((FLOOR((SYSDATE-ATE.DT_ATENDIMENTO))/6)) LIKE '%,%' THEN 'NULL' WHEN TO_CHAR((FLOOR((SYSDATE-ATE.DT_ATENDIMENTO))/6))='0' THEN 'NULL' ELSE 'PARCIAL' END STATUS FROM ATENDIMENTOS_OVERCLINIC INNER JOIN CLIENTES PAC ON PAC.CD_CLIENTE = ATE.CD_PACIENTE INNER JOIN CONVENIOS C ON C.CD_CONVENIO = ATE.CD_CONVENIO INNER JOIN MOVENTOS MVI ON MVI.CD_ATENDIMENTO = ATE.CD_ATENDIMENTO AND MVI.HR_LIB_MOV IS NULL INNER JOIN LEITO LEI ON LEI.CD_LEITO = MVI.CD_LEITO INNER JOIN DBAMV.UNID_INT UNI ON UNI.CD_UNID_INT = LEI.CD_UNID_INT WHERE ATE.DT_ALTA IS NULL AND ATE.TP_ATENDIMENTO='I' AND CASE WHEN TO_CHAR((FLOOR((SYSDATE-ATE.DT_ATENDIMENTO))/6)) LIKE '%,%' THEN 'NULL' WHEN TO_CHAR((FLOOR((SYSDATE-ATE.DT_ATENDIMENTO))/6))='0' THEN 'NULL' ELSE 'PARCIAL' END='PARCIAL' ORDER BY 3";
try{
stm=conexao.createStatement();
res=stm.executeQuery(sql);
while(res.next()){
Conta co = new Conta();
co.setAtendimento(res.getInt("CD_ATENDIMENTO"));
co.setPaciente(res.getString("NM_PACIENTE"));
co.setLeito(res.getString("DS_LEITO"));
co.setUnid_internacao(res.getString("DS_UNID_INT"));
co.setDias_internado(res.getString("DIAS_INTERNADO"));
co.setConvenio(res.getString("NM_CONVENIO"));
listaContas.add(co);
}
}catch(SQLException e){
System.out.println("Ocorreu um erro na conexao com o banco no momento de inserir a lista de contas.");
}finally{
try{
stm.close();
conexao.close();
}
catch(Throwable e){
System.out.println("Ocorreu um erro ao tentar fechar a conexao.");
}
}
return listaContas;
}
\\ Esse é o metodo que recebe o parametro do Bean
public List<Conta> parcial_guias(Integer atendimento){
Conexao con = new Conexao();
Connection conexao = con.conecta();
List<Conta> listaContas2 = new ArrayList<Conta>();
Conta c = null;
ResultSet res=null;
PreparedStatement filtra = null;
String sql="select cd_atendimento as atendimento from atendimentos where cd_atendimento=?";
try{
filtra=conexao.prepareStatement(sql);
filtra.setInt(1, atendimento);
res=filtra.executeQuery();
while(res.next()){
c = new Conta();
c.setAtendimento_retorno(res.getInt("atendimento"));
**// Aqui imprime o atendimento selecionado.**
System.out.println("Paramento na DAO ---> "+atendimento);
listaContas2.add(c);
}
}catch(SQLException e){
System.out.println("Ocorreu um erro na conexao com o banco no momento de inserir a lista de detalhamento das contas.");
}finally{
try{
res.close();
filtra.close();
conexao.close();
}
catch(Throwable e){
System.out.println("Ocorreu um erro ao tentar fechar a conexao.");
}
}
return listaContas2; // **retorno da lista o list do Bean**
}
}
Essa é pagina do pop-up que deveria carregar o Datatable com retorno do parametro
<h:form id="form">
<p:growl id="msgs" showDetail="true" />
\ Aqui está o list que deveria retornar o parametro
<p:dataTable id="tbpanel2" var="panel2" value="#{ContaBean.details}" style="font-size:11px;max-width:1100px" scrollable="true" scrollHeight="250">
<f:facet name="header" style="font-size:16px">
teste
</f:facet>
<p:column headerText="Atendimento" >
<center><h:outputText value="#{panel2.atendimento_retorno}"/></center>
</p:column>
</p:dataTable>
</h:form>

