Duvida com dataTable

2 respostas
anderson.bonavides

Pessoal estou com uma duvida, tenho os relacionamentos das minhas tabelas mapeados da seguinte forma:

Usuario, Endereco e Login.
Onde:
Usuario tem vários endereços (1…x)
e
Usuario tem um Login (1…1)

Na hora de mapear no meu dataTable fica da seguinte forma:

<rich:dataTable value="#{usuarioBean.usuarios}" var="usuario" onRowMouseOver="this.style.backgroundColor='#F8F8F8'" onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'" rowClasses="cur"> <rich:column> <f:facet name="header">Id</f:facet> <h:outputText value="#{usuario.id}" /> </rich:column> <rich:column> <f:facet name="header">Nome</f:facet> <h:outputText value="#{usuario.nome}" /> </rich:column> <rich:column> <f:facet name="header"> Telefone </f:facet> <h:outputText value="#{usuario.telefone}" /> </rich:column> <rich:column> <f:facet name="header">Idade</f:facet> <h:outputText value="#{usuario.idade}" /> </rich:column> <rich:column> <f:facet name="header">Rua</f:facet> <h:outputText value="#{usuario.endereco.rua}" /> </rich:column> <rich:column> <f:facet name="header">Número</f:facet> <h:outputText value="" /> </rich:column> <rich:column> <f:facet name="header">Bairro</f:facet> <h:outputText value="" /> </rich:column> <rich:column> <f:facet name="header">Pais</f:facet> <h:outputText value="" /> </rich:column> <rich:column> <f:facet name="header">Login</f:facet> <h:outputText value="#{usuario.login.nomeLogin}" /> </rich:column> </rich:dataTable>

Pessoal, o problema é que a tag <h:outputText value="#{usuario.endereco.rua}" /> não está funcionando. É gerado o seguinte erro:

Caused by: javax.faces.FacesException: javax.el.PropertyNotFoundException: /telas/usuario/listarUsuario.xhtml @47,57 value="#{usuario.endereco.rua}": The class 'java.util.LinkedHashSet' does not have the property 'rua'. at javax.faces.component.UIOutput.getValue(UIOutput.java:176) at org.apache.myfaces.shared_impl.renderkit.RendererUtils.getValue(RendererUtils.java:327) ... 59 more Caused by: javax.el.PropertyNotFoundException: /telas/usuario/listarUsuario.xhtml @47,57 value="#{usuario.endereco.rua}": The class 'java.util.LinkedHashSet' does not have the property 'rua'. at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:73) at javax.faces.component.UIOutput.getValue(UIOutput.java:173) ... 60 more

Alguem pode me ajudar com isso?

Grato!

2 Respostas

G

entao, vc n pode chamar o #{usuario.endereco.rua} pq o var q vc definiu no datatable so tem o conteudo da lista q foi gerada, e nada mais do q isso, vc teria q ter #{usuario.rua} ai funcionaria, provavelmente no #{usuario.login.nomeLogin} vai da o mesmo erro…

anderson.bonavides

guimoz,

Na verdade o funciona normalmente.

Vou postar meus métodos pra ver se melhora um pouco.

Bean:

public class UsuarioBean {

	private Usuario usuario;
	private Endereco endereco;
	private Login login;
	@SuppressWarnings("unchecked")
	private UsuarioDAOImpl usuarioDaoImpl;
	@SuppressWarnings("unused")
	private String resultado;
	private List<Usuario> usuarios;
	
	//get´s e set´s

	@SuppressWarnings("unchecked")
	public List<Usuario> getUsuarios() {
		usuarios = new ArrayList<Usuario>();
		usuarios = usuarioDaoImpl.listar();
		return usuarios;
	}

}
Dao:
public abstract class GenericDAOImpl<T> implements GenericDAO<T> {

	SessionFactory sf;
	Session session;

	public GenericDAOImpl() {
		this.sf = new AnnotationConfiguration().configure("/hibernate.cfg.xml")
				.buildSessionFactory();
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<T> listar() {
		List objects = null;
		try {
			session = sf.openSession();
			@SuppressWarnings("unused")
			Transaction tx = session.beginTransaction();
			Query select = session.createQuery("Select u from Usuario u");
			objects = select.list();
			session.close();
			System.out.println("\nNAO LANCOU EXCECAO!!!");
		} catch (HibernateException he) {
			System.out.println("LANCOU EXCECAO!!!");
			he.printStackTrace();
		}
		return objects;
	}

}
Criado 18 de março de 2009
Ultima resposta 18 de mar. de 2009
Respostas 2
Participantes 2