Caros amigos,
Estou tentando fazer algo simples, mas que no Seam está complicado. Quero apresentar uma propriedade(List) de uma determinada classe na tela, para assegurar que essa propriedade está populada, eu itero na classe e analiso o resultado (tudo ok), em seguida prossigo na navegação das minhas páginas…vejam:
Entidade
[code]@Name(“usuario”)
@Entity
@Scope(ScopeType.SESSION)
@Table(name=“tb_login”, catalog=“GDPerso”, schema=“dbo”)
public class Usuario implements Serializable {
//várias coisas omitidas
@ManyToMany(fetch=FetchType.EAGER)
@JoinTable(name="tr_login_transacao", catalog="GDPerso", schema="dbo",
joinColumns={@JoinColumn(nullable=false, name="idLogin", referencedColumnName="idLogin")},
inverseJoinColumns={@JoinColumn(nullable=false, name="idTransacao", referencedColumnName="idTransacao")}
)
//mapeamento ok, inclusive a classe Menu. Do outro lado: @ManyToMany(mappedBy="menus")
private List<Menu> menus = new ArrayList<Menu>();
}[/code]
SessionBean
@Name("usuarioBean")
@Stateful
@Scope(ScopeType.EVENT)
public class UsuarioBean implements IUsuarioBean {
@SuppressWarnings("all")
public String login() throws BusinessException {
String navigation = null;
try {
Query query = this.entityManager.createQuery("from Usuario where nome=:nome and senha=:senha");
query.setParameter("nome", usuario.getNome());
query.setParameter("senha", usuario.getSenha());
this.usuario = (Usuario) query.getSingleResult();
Iterator<Menu> menux = this.usuario.getMenus().iterator();
//A iteração apresenta os resultados esperados...
while(menux.hasNext()) {
Menu m = menux.next();
System.out.println(m.getId() + " " + m.getDescricao());
}
navigation = "sucesso";
}catch(NoResultException nre) {
facesMessages.addFromResourceBundle("application.erro_usuario_senha_invalido", null);
}catch(Exception e) {
log.error("Ocorreu um erro na tentativa de login. - #0", e);
throw new BusinessException(e);
}
return navigation;
}
}
View
[code]<?xml version=“1.0” encoding=“ISO-8859-1”?>
<!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:ui=“http://java.sun.com/jsf/facelets”
xmlns:h=“http://java.sun.com/jsf/html”
xmlns:f=“http://java.sun.com/jsf/core”
xmlns:rich=“http://richfaces.org/rich”
xmlns:s=“http://jboss.com/products/seam/taglib”>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title><h:outputText value="#{messages['application.titulo']}" /></title>
<link href="#{facesContext.externalContext.requestContextPath}/css/stilo_scp.css" rel="stylesheet" type="text/css" />
</head>
<body class="body">
<ui:include src="header.xhtml" />
<div id="menu">
/*
* Aqui apresenta 'true', e é por isso que não sei o que fiz de errado!
*/
#{empty usuario.menus}
<ui:include src="menu.xhtml" />
</div>
<div id="corpo">
<ui:insert name="corpo" />
</div>
</body>
</html>[/code]
Aguardo uma ajuda,
Abraço.