Combobox Aninhado (SelectOneMenu)

Olá. Gostaria de saber se alguém pode me passar um exemplo de combobox aninhado (país, estado, cidade) com JSF ou PrimeFaces. Se possível com o xhtml, os beans e os backbeans. Talvez eu esteja pedindo demais, mas é que estou a 2 dias tentando resolver isso para meu projeto de TCC e não estou conseguindo. :frowning:
Obs.: já olhei alguns exemplos na net mas não me ajudaram muito.

[quote=jonas.cant]Olá. Gostaria de saber se alguém pode me passar um exemplo de combobox aninhado (país, estado, cidade) com JSF ou PrimeFaces. Se possível com o xhtml, os beans e os backbeans. Talvez eu esteja pedindo demais, mas é que estou a 2 dias tentando resolver isso para meu projeto de TCC e não estou conseguindo. :frowning:
Obs.: já olhei alguns exemplos na net mas não me ajudaram muito. [/quote]

Sua dificuldade esta na lógica ou não sabe como os componentes funcionam?

Como os componentes funcionam eu entendi, então acredito que meu problema está na implementação mesmo. Sou bastante iniciante, preciso desenvolver meu projeto em Java e estou encontrando dificuldades com esses detalhes. Por exemplo, o que em Delphi eu faria em 20 minutos em Java eu to levando dias, justamente por essa falta de experiência/conhecimento de como funciona o negócio.
Enfim, agora preciso me virar e aprender na marra…

Entendi, então já que você esta iniciando com Java seria interessante para o seu aprendizado postar suas classes, xhtml para analisarmos juntos o que esta acontecendo, pode ser?

Não sei se vai ajudar muito, mas vamos lá…

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui"> 

<h:body>

<ui:composition	template="tpl.xhtml">

	<ui:define name="conteudo">

	
		<h:form prependId="false">
			<p:commandButton value="Novo" icon="ui-icon-star" actionListener="#{clienteController.prepararAdicionarCliente}" update=":formCadCliente:panelGridCadCliente" oncomplete="dialogCadCliente.show()"/>		    
		</h:form>	
		
		<h:form id="formConCliente">		
	        <p:dataTable id="tabela" var="cli" value="#{clienteController.listarClientes}"
	        	
	        	widgetVar="clientesTable" emptyMessage="Nenhum cliente encontrado!"
	        	filteredValue="#{clienteController.filteredClientes}"
	        
	        >
	            <p:column	            
	            	filterBy="#{cli.codigo}"
	            	filterMatchMode="contains"
	            >
	                <f:facet name="header">
	                    <h:outputText value="Código"/>
	                </f:facet>
	                <h:outputText value="#{cli.codigo}" />
	            </p:column>
	            <p:column
	            	filterBy="#{cli.nome}"
	            	filterMatchMode="contains"	            	            
	            >
	                <f:facet name="header">
	                    <h:outputText value="Nome"/>
	                </f:facet>
	                <h:outputText value="#{cli.nome}"/>
	            </p:column>
	            <p:column>
	                <f:facet name="header">
	                    <h:outputText value="CPF"/>
	                </f:facet>
	                <h:outputText value="#{cli.cpf}"/>
	            </p:column>
				<p:column>
				    <f:facet name="header">
				        <h:outputText value="Opções"/>
				    </f:facet>
				    <p:commandButton icon="ui-icon-pencil" actionListener="#{clienteController.prepararAlterarCliente}" value="Alterar" update=":formCadTipoDocumento:panelGridCadTipoDocumento" oncomplete="dialogCadTipoDocumento.show()"/>
                    <p:commandButton icon="ui-icon-close" actionListener="#{clienteController.excluirCliente}" value="Excluir" update=":formConCliente:tabela" />					    
				</p:column>	            	            
	        </p:dataTable>	    
		</h:form>

		<p:dialog header="Cliente" widgetVar="dialogCadCliente" resizable="false" modal="false" showEffect="slide" width="500" >	            
		     <h:form id="formCadCliente">
		         <h:panelGrid id="panelGridCadCliente" columns="2" style="margin-bottom:10px">	 
		             <h:outputLabel for="codigo" value="Código:" />
		             <h:inputText id="codigo" value="#{clienteController.cliente.codigo}" disabled="true"/>	 
		             <h:outputLabel for="nome" value="Nome:" />
		             <h:inputText id="nome" value="#{clienteController.cliente.nome}"/>	 	                    	                    
					 <h:outputLabel for="dtNascimento" value="Nascimento:" />
					 <p:calendar value="#{clienteController.cliente.dtNascimento}" id="dtNascimento" showOn="button" />
		             <h:outputLabel for="cpf" value="CPF:" />
		             <h:inputText id="cpf" value="#{clienteController.cliente.cpf}"/>	 
					 <h:outputLabel for="estadoCivil" value="Estado Civil:"/>
		             <p:selectOneMenu id="estadoCivil" value="#{clienteController.cliente.estadoCivil}">
		                 <f:selectItem itemLabel="Selecione..." itemValue="" />
		                 <f:selectItem itemLabel="Solteiro(a)" itemValue="Solteiro(a)" />
		                 <f:selectItem itemLabel="Casado(a)" itemValue="Casado(a)" />
		                 <f:selectItem itemLabel="Viúvo(a)" itemValue="Viúvo(a)" />
		                 <f:selectItem itemLabel="Divorciado(a)" itemValue="Divorciado(a)" />
		             </p:selectOneMenu>
		             <h:outputLabel for="logradouro" value="Logradouro:" />
		             <h:inputText id="logradouro" value="#{clienteController.cliente.logradouro}"/>	 
		             <h:outputLabel for="numero" value="Número:" />
		             <h:inputText id="numero" value="#{clienteController.cliente.numero}"/>	 
		             <h:outputLabel for="bairro" value="Bairro:" />
		             <h:inputText id="bairro" value="#{clienteController.cliente.bairro}"/>	 
		             <h:outputLabel for="complemento" value="Complemento:" />
		             <h:inputText id="complemento" value="#{clienteController.cliente.complemento}"/>
		             <h:outputLabel for="cep" value="CEP:" />
		             <h:inputText id="cep" value="#{clienteController.cliente.cep}"/>
		             <h:outputLabel for="pais" value="País:"/>
		             <p:selectOneMenu id="pais" value="#{paisController.pais}">
		                 <f:selectItem itemLabel="Selecione..." itemValue="" />
		                 <f:selectItems value="#{paisController.listarPaisesCombo}" />
						 <p:ajax event="change" listener="#{paisController.actionCarregaUFs}" update="uf" />						 		                 
		             </p:selectOneMenu>
		             <h:outputLabel for="uf" value="UF:"/>		             	 
		             <p:selectOneMenu id="uf" value="">
		                 <f:selectItem itemLabel="Selecione..." itemValue="" />
		                 <f:selectItems value="#{paisController.ufs}" />
		             </p:selectOneMenu>
		             <h:outputLabel for="municipio" value="Município:"/>		             					 
		             <p:selectOneMenu id="municipio" value="">
		                 <f:selectItem itemLabel="Selecione..." itemValue="" />
		                 <f:selectItems value="#{paisController.listarPaisesCombo}" />
		             </p:selectOneMenu>
					 

 					 <p:commandButton icon="ui-icon-disk" id="commandButtonInserir" update=":formConCliente:tabela" oncomplete="dialogCadCliente.hide();" actionListener="#{clienteController.adicionarCliente}" value="Inserir" rendered="#{clienteController.isInsercao}"/>
					 <p:commandButton icon="ui-icon-disk" id="commandButtonAlterar" update=":formConCliente:tabela" oncomplete="dialogCadCliente.hide();" actionListener="#{clienteController.alterarCliente}" value="Alterar" rendered="#{clienteController.isAlteracao}"/>	 						
		         </h:panelGrid>
		     </h:form>
		 </p:dialog>	
	
	
	
	
	</ui:define>
</ui:composition>

</h:body>

</html>
package model;

import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name = "pais")
public class Pais {

	@Id
	@Column(name = "id_pais")
	private Integer codigo;
	@Column(length = 4)
	private String sigla;
	private String nome;
	@OneToMany(mappedBy = "pais")
	private List<UnidadeFederacao> unidadesFederacao;
	
	
	public Object getId() {
		return nome;
	}
	
	public Integer getCodigo() {
		return codigo;
	}

	public void setCodigo(Integer codigo) {
		this.codigo = codigo;
	}

	public String getSigla() {
		return sigla;
	}

	public void setSigla(String sigla) {
		this.sigla = sigla;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public List<UnidadeFederacao> getUnidadesFederacao() {
		return unidadesFederacao;
	}

	public void setUnidadesFederacao(List<UnidadeFederacao> unidadesFederacao) {
		this.unidadesFederacao = unidadesFederacao;
	}
		

}
package dao;

import java.util.List;

import javax.persistence.Entity;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

import util.HibernateUtil;

import model.Municipio;
import model.Pais;
import model.UnidadeFederacao;

public class PaisDaoImp implements PaisDao {


	public void save(Pais pais) {
		Session session = HibernateUtil.getSession().openSession();
		Transaction t = session.beginTransaction();
		session.save(pais);
		t.commit();				
	}

	public Pais getPais(long id) {
		Session session = HibernateUtil.getSession().openSession();				
		return (Pais) session.load(Pais.class, id);		
	}

	public List<Pais> list() {
		Session session = HibernateUtil.getSession().openSession();
		Transaction t = session.beginTransaction();
		List lista = session.createQuery("from Pais").list();
		t.commit();
		return lista;		

	}

	public void remove(Pais pais) {
		Session session = HibernateUtil.getSession().openSession();
		Transaction t = session.beginTransaction();
		session.delete(pais);
		t.commit();						
	}

	public void update(Pais pais) {
		Session session = HibernateUtil.getSession().openSession();
		Transaction t = session.beginTransaction();
		session.update(pais);
		t.commit();			
	}

	public Pais findById(Integer id) {
		Session session = HibernateUtil.getSession().openSession();		
		Pais pais = (Pais) session.load(Pais.class, id);
		return pais;
	}

	@SuppressWarnings("unchecked")
	public List<UnidadeFederacao> getUFsByPais(Integer id) {
		Session session = HibernateUtil.getSession().openSession();
		Transaction t = session.beginTransaction();
		Query q = session.createQuery("select c from " + UnidadeFederacao.class.getName() + " as c where c.pais.codigo like :id");
		q.setParameter("id", id);				
		t.commit();
		return q.list();	
	}
	
	
	

}
package control;

import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
import javax.faces.event.AbortProcessingException;
import javax.faces.event.AjaxBehaviorEvent;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import javax.faces.model.SelectItem;

import model.Pais;
import model.UnidadeFederacao;
import dao.PaisDao;
import dao.PaisDaoImp;
import dao.UnidadeFederacaoDao;
import dao.UnidadeFederacaoDaoImp;

@ManagedBean
@ViewScoped
public class PaisController {

	private Pais pais;
	private DataModel listaPaises;
	private List<Pais> filteredPaises;
	private Boolean isInsercao;
	private Boolean isAlteracao;
	private List<SelectItem> ufs = new ArrayList<SelectItem>(); 

	public List<Pais> getFilteredPaises() {
		return filteredPaises;
	}

	public void setFilteredPaises(List<Pais> filteredPaises) {
		this.filteredPaises = filteredPaises;
	}

	public DataModel getListarPaises() {
		List<Pais> lista = new PaisDaoImp().list();
		listaPaises = new ListDataModel(lista);
		return listaPaises;
	}

	public List<SelectItem> getListarPaisesCombo() {
		List<SelectItem> listaCombo = new ArrayList<SelectItem>();
		List<Pais> lista = new PaisDaoImp().list();
		
		PaisDao pd = new PaisDaoImp();
				
		for (int i = 1; i <= lista.size(); i++) {
			SelectItem item = new SelectItem();			
			item.setLabel(lista.get(i - 1).getNome());						
			item.setValue(pd.findById(lista.get(i - 1).getCodigo()));
			listaCombo.add(item);
		}
				
		return listaCombo;
	}
	
	public List<SelectItem> getUFsByPais() {
		System.out.println("SELECIONADO: " + this.pais.getCodigo());
		
		List<SelectItem> listaCombo = new ArrayList<SelectItem>();						
		List<UnidadeFederacao> lista = new PaisDaoImp().getUFsByPais(this.pais.getCodigo());
		
		UnidadeFederacaoDao uf = new UnidadeFederacaoDaoImp();
		
		for (int i = 1; i <= lista.size(); i++) {
			SelectItem item = new SelectItem();			
			item.setLabel(lista.get(i - 1).getNome());						
			item.setValue(uf.findById(lista.get(i - 1).getCodigo()));
			listaCombo.add(item);			
		}
		
		return listaCombo;
	}
	
	public void actionCarregaUFs(AjaxBehaviorEvent event) throws AbortProcessingException {
		
		System.out.println("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
		
		//this.ufs = this.getUFsByPais();
	}	
	

	public Pais getPais() {
		return pais;
	}

	public void setPais(Pais pais) {
		this.pais = pais;
	}

	public String prepararAdicionarPais() {
		pais = new Pais();
		isInsercao = true;
		isAlteracao = false;
		return "gerenciarPais";
	}

	public String prepararAlterarPais() {
		pais = (Pais) (listaPaises.getRowData());
		isInsercao = false;
		isAlteracao = true;
		return "gerenciarPais";
	}

	public String excluirPais() {
		Pais paisTemp = (Pais) (listaPaises.getRowData());
		PaisDao dao = new PaisDaoImp();
		dao.remove(paisTemp);
		return "index";
	}

	public String adicionarPais() {
		PaisDao dao = new PaisDaoImp();
		dao.save(pais);
		return "index";
	}

	public String alterarPais() {
		PaisDao dao = new PaisDaoImp();
		dao.update(pais);
		return "index";
	}

	public Boolean getIsInsercao() {
		return isInsercao;
	}

	public void setIsInsercao(Boolean insercao) {
		this.isInsercao = insercao;
	}

	public Boolean getIsAlteracao() {
		return isAlteracao;
	}

	public void setIsAlteracao(Boolean alteracao) {
		this.isAlteracao = alteracao;
	}

	public List<SelectItem> getUfs() {
		return ufs;
	}

	public void setUfs(List<SelectItem> ufs) {
		this.ufs = ufs;
	}
	
}

Vamos lá então,
vc esta querendo que o combo de pais retorne um Objeto Pais e não apenas seu código, para isso vc teria que implementar no seu projeto a classe converter,

Tenho um exemplo de converter aqui, particularmente nunca usei ele em ComboBox:
No caso vc teria que criar um para Pais, Estado e Cidade;

package converter;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import DAO.EstadoDAO;
import to.Estado;


@FacesConverter(value = "converterEstado")
public class ConverterEstado implements Converter {
	@Override

	public Object getAsObject(FacesContext context, UIComponent component, String value) {
		try {
			if (value != null && !value.equals("")) {

				EstadoDAO estadoDAO = new EstadoDAO();

				return estadoDAO.buscarEstadoPorCodigo((Integer.parseInt(value)));
			}

		} catch (Exception e) {
			e.printStackTrace();
		}

		return null;
	}



	@Override

	public String getAsString(FacesContext context, UIComponent component, Object value) {

		if (value instanceof Estado) {

			Estado estado = (Estado) value;

			return String.valueOf(estado.getCodigo());

		}
		return "";
	}
}

lembrando que vc deve adicionar o converter=“nomeConverter” no componente desejado, o nome deve ser o mesmo da annotation @FacesConverter(value = “converterEstado”) da classe converter

agora no seu xhtml parece estar ok, apenas faltaram algumas propriedades, mas ficaria mais ou menos assim:

<p:selectOneMenu id="pais" value="#{paisController.pais}" converter="paisConverter"> <f:selectItem itemLabel="Selecione..." itemValue="" /> <f:selectItems value="#{paisController.listarPaisesCombo}" /> <p:ajax listener="#{paisController.actionCarregaUFs}" update="uf" /> </p:selectOneMenu>

aqui vc teria que seguir a lógica do combo de país:

                  <h:outputLabel for="uf" value="UF:"/>                           
                     <p:selectOneMenu id="uf" value="#{paisController.uf}" converter="ufConverter"> // <----- adicionar o Objeto uf aqui
                         <f:selectItem itemLabel="Selecione..." itemValue="" />  
                         <f:selectItems value="#{paisController.ufs}" />  
                  <p:ajax listener="#{paisController.actionCarregaUFs}" update="uf" /> //<------- adicionar o ajax para carregar as cidades
                     </p:selectOneMenu>

<h:outputLabel for="municipio" value="Município:"/> <p:selectOneMenu id="municipio" value="#{paisController.cidade}" converter="cidadeConverter"> // <----- adicionar o Objeto cidade aqui <f:selectItem itemLabel="Selecione..." itemValue="" /> <f:selectItems value="#{paisController.listarCidadesCombo}" /> // <-------Combo de Cidades </p:selectOneMenu>

Valeu, Luan! Em tempo oportuno eu vou tentar implementar o conversor. Eu retorno pro tópico assim que possível. Obrigado.

Valeu cara, também sou iniciante em PrimeFaces, mas é legal essa troca de informações, então tenta implementar la…

Luan, na verdade não preciso implementar um converter, porque eu já estou retornando uma lista de ‘SelectItem’. Creio que o problema não esteja aí.
Não teria como você me passar seu código com o combobox aninhado de país/estado/município?

A forma como faço é essa mesma, apenas faço o combo retornar o código do objeto selecionado.

Agora quando eu acesso a página jsf onde eu utilizo o bean da classe Pais, ocorre as seguintes exceções:

Mar 05, 2013 4:26:49 PM org.hibernate.annotations.common.Version <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {4.0.1.Final}
Mar 05, 2013 4:26:49 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {4.1.9.Final}
Mar 05, 2013 4:26:49 PM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
Mar 05, 2013 4:26:49 PM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
Mar 05, 2013 4:26:49 PM org.hibernate.cfg.Configuration configure
INFO: HHH000043: Configuring from resource: hibernate.cfg.xml
Mar 05, 2013 4:26:49 PM org.hibernate.cfg.Configuration getConfigurationInputStream
INFO: HHH000040: Configuration resource: hibernate.cfg.xml
Mar 05, 2013 4:26:49 PM org.hibernate.internal.util.xml.DTDEntityResolver resolveEntity
WARN: HHH000223: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!
Mar 05, 2013 4:26:49 PM org.hibernate.cfg.Configuration doConfigure
INFO: HHH000041: Configured SessionFactory: 
Mar 05, 2013 4:26:50 PM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000402: Using Hibernate built-in connection pool (not for production use!)
Mar 05, 2013 4:26:50 PM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000115: Hibernate connection pool size: 20
Mar 05, 2013 4:26:50 PM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000006: Autocommit mode: false
Mar 05, 2013 4:26:50 PM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000401: using driver [org.gjt.mm.mysql.Driver] at URL [jdbc:mysql://localhost/hmaster]
Mar 05, 2013 4:26:50 PM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000046: Connection properties: {user=root, password=****}
Mar 05, 2013 4:26:50 PM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQLDialect
Mar 05, 2013 4:26:50 PM org.hibernate.engine.transaction.internal.TransactionFactoryInitiator initiateService
INFO: HHH000399: Using default transaction strategy (direct JDBC transactions)
Mar 05, 2013 4:26:50 PM org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory <init>
INFO: HHH000397: Using ASTQueryTranslatorFactory
Mar 05, 2013 4:26:50 PM org.hibernate.internal.SessionFactoryRegistry addSessionFactory
WARN: HHH000277: Could not bind factory to JNDI
org.hibernate.service.jndi.JndiException: Error performing intermediate bind []
	at org.hibernate.service.jndi.internal.JndiServiceImpl.bind(JndiServiceImpl.java:167)
	at org.hibernate.service.jndi.internal.JndiServiceImpl.bind(JndiServiceImpl.java:110)
	at org.hibernate.internal.SessionFactoryRegistry.addSessionFactory(SessionFactoryRegistry.java:89)
	at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:478)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1750)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1788)
	at util.HibernateUtil.buildSessionFactory(HibernateUtil.java:17)
	at util.HibernateUtil.<clinit>(HibernateUtil.java:8)
	at dao.PaisDaoImp.list(PaisDaoImp.java:33)
	at control.PaisController.getListarPaisesCombo(PaisController.java:50)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at javax.el.BeanELResolver.getValue(BeanELResolver.java:87)
	at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
	at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
	at org.apache.el.parser.AstValue.getValue(AstValue.java:183)
	at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:185)
	at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
	at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
	at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
	at javax.faces.component.UISelectItems.getValue(UISelectItems.java:129)
	at org.primefaces.renderkit.InputRenderer.getSelectItems(InputRenderer.java:53)
	at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeMarkup(SelectOneMenuRenderer.java:68)
	at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeEnd(SelectOneMenuRenderer.java:62)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1786)
	at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
	at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:56)
	at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:44)
	at org.primefaces.component.layout.LayoutUnitRenderer.encodeEnd(LayoutUnitRenderer.java:51)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1786)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782)
	at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:437)
	at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:124)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:343)
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
	at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:177)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:149)
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: javax.naming.NamingException: Name is not valid
	at org.apache.naming.NamingContext.bind(NamingContext.java:893)
	at org.apache.naming.NamingContext.rebind(NamingContext.java:226)
	at org.apache.naming.SelectorContext.rebind(SelectorContext.java:218)
	at javax.naming.InitialContext.rebind(Unknown Source)
	at org.hibernate.service.jndi.internal.JndiServiceImpl.bind(JndiServiceImpl.java:164)
	... 86 more

Não sei se tem algo a ver com meu problema, se não tiver nada a ver, então agora tenho dois problemas diferentes…

[quote=jonas.cant]Agora quando eu acesso a página jsf onde eu utilizo o bean da classe Pais, ocorre as seguintes exceções:
.
.
.
.
Não sei se tem algo a ver com meu problema, se não tiver nada a ver, então agora tenho dois problemas diferentes…[/quote]

Esse erro é do hibernate.

viu, ta usando Spring ou JSF?

Os frameworks que estou utilizando (ou ao menos TENTANDO utilizar) são:

  • JSF
  • Hibernate
  • Spring Security

E na parte visual do sistema eu uso PrimeFaces.

Não sei mais o que fazer, eu to muito amarrado a detalhezinhos que me deixam dias sem produzir praticamente nada. Eu confesso que gosto de Java, só que fazer um TCC em Java sem ter experiência é pra quebrar a cuca mesmo!

Essas excecões de cima eu consegui resolver.
No meu hibernate.cfg.xml estava assim:
Eu apenas removi o ‘name=""’.