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;
}
}