Combobox Aninhado (SelectOneMenu)

13 respostas
J

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.

13 Respostas

L

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.

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

J

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…

L

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?

J

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

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>

J

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

L

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

J

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?

L

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

J

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…

L

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…

Esse erro é do hibernate.

viu, ta usando Spring ou JSF?

J

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!

J

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

Criado 5 de março de 2013
Ultima resposta 5 de mar. de 2013
Respostas 13
Participantes 2