Richfaces datable com subtable(Classico Master-Detail)

0 respostas
G

Olá a todos.
Estou iniciando em JSF+Richfaces e ainda não consegui mostrar os dados corretamente dentro de uma estrutura Datatable+Subtable.

No meu exemplo tenho um simples cadastro de Pais e outro de Estado. Quero mostrar o Pais no Datatable e seus respectivos estados no Subtable.

O meu problema esta em passar o pais como parametro e retornar apenas os estados do pais passado como parametro.
Abaixo coloco o codigo da pagina e tambem as classes.
Estou utilizando Hibernate tambem.

Como passar o Pais como parametro na consulta de estados dentro da pagina jsf ??? ou não seria dentro da pagina jsf ?

Obrigado pelas respostas !!!

o Codigo da pagina é o seguinte:

<rich:dataTable value="#{beanPais.listapais}" var="vr" id="Tabelapais" border="5" rows="10" binding="#{beanPais.objDataTablePais}" align="center" >
  <rich:column id="c1" >
    <f:facet name="header">
      <h:outputText value="Sigla" id="out1"/>
    </f:facet>
    <h:outputText value="#{vr.idpais}" id="out2"/>
  </rich:column>	
  <rich:column id="c2">
    <f:facet name="header">
      <h:outputText value="Nome do Pais" id="out3"/>
    </f:facet>
    <h:outputText value="#{vr.nomepais}" id="out4"/>
  </rich:column>

  <rich:subTable id="subtb1" binding="#{beanEstado.objDataTableEstado}" var="uf" value="#{beanEstado.listaestado}">
   <rich:column id="rc1" >
    <f:facet name="header">
      <h:outputText value="Estado" id="sout1"/>
    </f:facet>
    <h:outputText value="#{uf.idestado}" id="sout2"/>
  </rich:column>
  <rich:column id="rc2" >
    <f:facet name="header">
      <h:outputText value="Nome do Estado" id="sout3"/>
    </f:facet>
    <h:outputText value="#{uf.nomeestado}" id="sout4"/>
  </rich:column>
  <rich:column id="rc3" >
    <f:facet name="header">
      <h:outputText value="Pais" id="sout5"/>
    </f:facet>
    <h:outputText value="#{vr.idpais}" id="sout6"/>
  </rich:column>
  </rich:subTable>
</rich:dataTable>

A classe beanpais [color=darkred] [/color]

public class BeanPais {

private Pais paisbean = new Pais();
private List<Pais> listapais = new ArrayList<Pais>();
private UIData objDataTablePais;
private String Param = "";

public BeanPais() {
}

public String Salvar() 
  {
   Session sessaoHiber = HibernateUtil.getSession();
   Transaction transacao = sessaoHiber.beginTransaction();
   try
	  {
		sessaoHiber.merge(paisbean);
		transacao.commit();
		SessionUtil.addSuccessMessage("OperacaoSucesso");
		paisbean = new Pais();
	  } catch (HibernateException he) 
	  { SessionUtil.addErrorMessage("OperacaoFracasso");
 		if (transacao!=null) transacao.rollback();
	    throw he;
	    //transacao.rollback();
	  } finally 
	  { sessaoHiber.close(); 
	  }
	  return null;
  }

public String Alterar(){
   paisbean = (Pais) objDataTablePais.getRowData();
   return "alteraPais";
}

public String Excluir() 
  {
   paisbean = (Pais) objDataTablePais.getRowData();	
   Session sessaoHiber = HibernateUtil.getSession();
   Transaction transacao = sessaoHiber.beginTransaction();
   try
	  {
		sessaoHiber.delete(paisbean);
		transacao.commit();
		SessionUtil.addSuccessMessage("OperacaoExclusao");
		paisbean = new Pais();
	  } catch (Exception e) 
	  {
	    transacao.rollback();
		SessionUtil.addErrorMessage("OperacaoFracasso");
	  } finally 
	  { sessaoHiber.close(); 
	  }
	  return null;
  }

@SuppressWarnings("unchecked")
public List<Pais> ListarTodos(){
	Session sessaoHiber = HibernateUtil.getSession();
	Query hbqy = sessaoHiber.createQuery("from Tbpais");
	List<Pais> paises = hbqy.list();
	return paises;
}

@SuppressWarnings("unchecked")
public List<Pais> ListarPorNome(String pesquisa){
	Session sessaoHiber = HibernateUtil.getSession();
	Query hbqy = sessaoHiber.createQuery("from Tbpais P where P.nomepais LIKE :pnomepais");
	hbqy.setParameter("pnomepais", "%"+pesquisa+"%");
	List<Pais> paises = hbqy.list();
	return paises;
}

public Pais getPaisbean() {
	return paisbean;
}

public void setPaisbean(Pais paisbean) {
	this.paisbean = paisbean;
}

public List<Pais> getListapais() {
	if (Param.equals(""))
		{listapais = ListarTodos();}
	else 
		{listapais = ListarPorNome(Param);}
	return listapais;
}

public void setListapais(List<Pais> listapais) {
	this.listapais = listapais;
}

public UIData getObjDataTablePais() {
	return objDataTablePais;
}

public void setObjDataTablePais(UIData objDataTablePais) {
	this.objDataTablePais = objDataTablePais;
}

public String getParam() {
	return Param;
}

public void setParam(String param) {
	Param = param;
}

}

a classe beanestado

public class BeanEstado {

public Estado estadobean = new Estado();
private List<Estado> listaestado = new ArrayList<Estado>();
private UIData objDataTableEstado;
public String ParamEstado = "";

public String Alterar(){
 estadobean = (Estado) objDataTableEstado.getRowData();
 return "alteraEstado";
}
	
public String Excluir() 
{
	   estadobean = (Estado) objDataTableEstado.getRowData();	
	   Session sessaoHiber = HibernateUtil.getSession();
       Transaction transacao = sessaoHiber.beginTransaction();
	   try
		  {
			sessaoHiber.delete(estadobean);
			transacao.commit();
			SessionUtil.addSuccessMessage("OperacaoExclusao");
			estadobean = new Estado();
		  } catch (Exception e) 
		  {
		    transacao.rollback();
			SessionUtil.addErrorMessage("OperacaoFracasso");
		  } finally 
		  { sessaoHiber.close(); 
		  }
		  return null;
	  }

	@SuppressWarnings("unchecked")
	public List<Estado> ListarTodos(){
		System.out.println("Listei Todos");
		Session sessaoHiber = HibernateUtil.getSession();
		Query hbqy = sessaoHiber.createQuery("from Tbestado");
		List<Estado> estados = hbqy.list();
		return estados;
	}

	@SuppressWarnings("unchecked")
	public List<Estado> ListarPorNome(String pesquisa){
		System.out.println("Listei Pornome");
		Session sessaoHiber = HibernateUtil.getSession();
		Query hbqy = sessaoHiber.createQuery("from Tbestado E where E.nomeestado LIKE :pnomeestado");
		hbqy.setParameter("pnomeestado", "%"+pesquisa+"%");
		List<Estado> estados = hbqy.list();
		return estados;
	}

public Estado getEstadobean() {
	return estadobean;
}

public void setEstadobean(Estado estadobean) {
	this.estadobean = estadobean;
}

public String Salvar() 
  {
	Session sessaoHiber = HibernateUtil.getSession();
	  Transaction transacao = sessaoHiber.beginTransaction();
	  try
	  {
		sessaoHiber.merge(estadobean);
		transacao.commit();
		//SessionUtil.addSuccessMessage("OperacaoSucesso");
		estadobean = new Estado();
	  } catch (Exception e) 
	  {
	    transacao.rollback();
		//SessionUtil.addErrorMessage("OperacaoFracasso");
	  } finally 
	  { sessaoHiber.close(); 
	  }
	  return null;
  }

public UIData getObjDataTableEstado() {
	return objDataTableEstado;
}

public void setObjDataTableEstado(UIData objDataTableEstado) {
	this.objDataTableEstado = objDataTableEstado;
}

public String getParamEstado() {
	return ParamEstado;
}

public void setParamEstado(String paramEstado) {
	ParamEstado = paramEstado;
}

public List<Estado> getListaestado() {
  if (ParamEstado.equals(""))
	{listaestado = ListarTodos();}
   else 
	{listaestado = ListarPorNome(ParamEstado);}
return listaestado;
}

public void setListaestado(List<Estado> listaestado) {
	this.listaestado = listaestado;
}

}

Criado 12 de agosto de 2009
Respostas 0
Participantes 1