[Logo] Neo Framework Forum
  [Search] Busca   [Recent Topics] Tópicos Recentes   [Members]  Lista de Usuários   [Groups] De volta para a página principal 
[Register] Registrar / 
[Login] Entrar 
Mensagens enviadas por: vitorhora  XML
Perfil de vitorhora -> Mensagens enviadas por vitorhora [10]
Autor Mensagem
Pedro.. enviei para pef.goncalves@gmail.com

Valeu
Pessoal... estou com um probleminha.
Quero fazer um master-detalhe entre Pais e estados

Seguem os códigos:


Code:
 
 Pais.java
 
 package br.com.webhotel.bean;
 
 import java.util.Collection;
 import java.util.List;
 
 import javax.persistence.CascadeType;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
 import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.OneToMany;
 import javax.persistence.SequenceGenerator;
 
 import br.com.linkcom.neo.bean.annotation.DescriptionProperty;
 import br.com.linkcom.neo.validation.annotation.MaxLength;
 
 @Entity
 @SequenceGenerator(name = "gen_pais", sequenceName = "gen_pais")
 public class Pais{
 
 	protected Integer idPais;
 	protected String descricao;
 	protected List<Estado> listaEstados;
 
 	@Id
 	@GeneratedValue(strategy = GenerationType.AUTO, generator = "gen_pais")
 	public Integer getIdPais() {
 		return idPais;
 	}
 
 	@MaxLength(20)
 	@DescriptionProperty
 	public String getDescricao() {
 		return descricao;
 	}
 	
 	@OneToMany(cascade = CascadeType.ALL, mappedBy = "pais")
 	public Collection<Estado> getListaEstados() {
 		return listaEstados;
 	}
 
 
 	public void setIdPais(Integer idPais) {
 		this.idPais = idPais;
 	}
 
 	public void setDescricao(String descricao) {
 		this.descricao = descricao;
 	}
 
 	
 	public void setListaEstados(List<Estado> listaEstados) {
 		this.listaEstados = listaEstados;
 	}
 	
 	
 
 }
 
 
 
 
 
 
 
 Estado.java
 
 
 package br.com.webhotel.bean;
 
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
 import javax.persistence.GeneratedValue;
 import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
 import javax.persistence.SequenceGenerator;
 
 import br.com.linkcom.neo.bean.annotation.DescriptionProperty;
 import br.com.linkcom.neo.validation.annotation.MaxLength;
 
 @Entity
 @SequenceGenerator(name = "gen_estado", sequenceName = "gen_estado")
 public class Estado {
 
 	protected Integer idEstado;
 	protected String descricao;
 	protected Pais pais;
 
 	@Id
 	@GeneratedValue(strategy = GenerationType.AUTO, generator = "gen_estado")
 	public Integer getIdEstado() {
 		return idEstado;
 	}
 
 	@MaxLength(20)
 	@DescriptionProperty
 	public String getDescricao() {
 		return descricao;
 	}
 
 	@ManyToOne(fetch = FetchType.LAZY)	
 	@JoinColumn(name = "idPais")
 	public Pais getPais() {
 		return pais;
 	}
 
 	public void setIdEstado(Integer idEstado) {
 		this.idEstado = idEstado;
 	}
 
 	public void setDescricao(String descricao) {
 		this.descricao = descricao;
 	}
 
 	public void setPais(Pais pais) {
 		this.pais = pais;
 	}
 
 }
 
 
 
 
 PaisDAO.java
 
 
 package br.com.webhotel.dao;
 
 import br.com.linkcom.neo.core.standard.Neo;
 import br.com.linkcom.neo.persistence.GenericDAO;
 import br.com.linkcom.neo.persistence.QueryBuilder;
 import br.com.linkcom.neo.persistence.SaveOrUpdateStrategy;
 import br.com.webhotel.bean.Pais;
 
 public class PaisDAO extends GenericDAO<Pais> {
 
 	/* singleton */
 	/*private static PaisDAO instance;
 	public static PaisDAO getInstance() {
 		if(instance == null){
 			instance = Neo.getObject(PaisDAO.class);
 		}
 		return instance;
 	}*/
 	
 	@Override
  	public void updateEntradaQuery(QueryBuilder<Pais> query) {
  		query.fetchCollection("listaEstados");
  	}
  
  	@Override
  	public void updateSaveOrUpdate(SaveOrUpdateStrategy save) {
  		save.saveOrUpdateManagedNormal("listaEstados");
  	}
  
 
 }
 
 
 
 
 EstadoDAO.java
 
 
 package br.com.webhotel.dao;
 
 import br.com.linkcom.neo.core.standard.Neo;
 import br.com.linkcom.neo.persistence.GenericDAO;
 import br.com.webhotel.bean.Estado;
 
 public class EstadoDAO extends GenericDAO<Estado> {
 
 	/* singleton */
 	/*private static EstadoDAO instance;
 	public static EstadoDAO getInstance() {
 		if(instance == null){
 			instance = Neo.getObject(EstadoDAO.class);
 		}
 		return instance;
 	}
 	*/
 	
 }
 
 
 
 
 
 paisEntrada.jsp
 
 
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 <%@ taglib prefix="n" uri="neo"%>
 <%@ taglib prefix="t" uri="template"%>
  <t:entrada>
      <t:janelaEntrada>
           <t:tabelaEntrada>
           <t:property name="idPais"/>
                 <t:property name="descricao"/>
           </t:tabelaEntrada>
  
           <t:detalhe name="listaEstados">
                <t:property name="idEstado"/> 
                <t:property name="descricao"/>
           </t:detalhe>
      </t:janelaEntrada>
  </t:entrada>
 
 
 
 paisListagem.jsp
 
 
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 <%@ taglib prefix="n" uri="neo"%>
 <%@ taglib prefix="t" uri="template"%>
 
 <t:listagem>     
      <t:tabelaResultados>
           <n:column>
               <t:property name="idPais"/>
               <t:property name="descricao"/>
               <n:dataGrid property="listaEstados">
                     <t:property name="idEstado"/>
                     <t:property name="descricao"/>
               </n:dataGrid>
           </n:column>
      </t:tabelaResultados>  
  </t:listagem>
 
 
 
 
 






Quando salvo o arquivo que ele vai listar aparece:

org.springframework.beans.NullValueInNestedPathException: Invalid property 'listaEstados[0]' of bean class [br.com.webhotel.bean.Pais]: Cannot access indexed value of property referenced in indexed property path 'listaEstados[0]': returned null
br.com.linkcom.neo.controller.ExtendedBeanWrapper.getPropertyValue(ExtendedBeanWrapper.java:737)



E quando entro na tela que ele vai listar os dados tbm aparece:

SEVERE: failed to lazily initialize a collection of role: br.com.webhotel.bean.Pais.listaEstados, no session or session was closed
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: br.com.webhotel.bean.Pais.listaEstados, no session or session was closed
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358)
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350)



Alguém sabe onde está o erro?





Blz Pedro.....
Pedro..... criei outro projeto identico ao que estava com erro e funcionou,
funcionou mas fiquei sem saber qual o enigma.



Meu filtro está


package filtro;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

import br.com.linkcom.neo.core.standard.Neo;

public class AutentificacaoFiltro implements Filter{

String loginPage = "/modulo/login";
public void destroy() {

}

public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {
if(Neo.getUser() == null){
request.getRequestDispatcher(loginPage)
.forward(request, response);
} else {
chain.doFilter(request, response);
}
}

public void init(FilterConfig filterConfig) throws ServletException {

}

}




Pessoal.... consegui identificar uma coisa

quando adiciono


<!-- Filtro de autenticação. Verifica se o usuário está logado -->
<filter>
<filter-name>authenticationFilter</filter-name>
<filter-class>filtro.AutentificacaoFiltro</filter-class>
</filter>

<!-- Esse filtro irá barrar todo acesso anonimo à /secured/* -->
<!-- Se desejar barrar acesso anonimo à outras URLs duplique o filter-mapping e altere a url-pattern -->
<filter-mapping>
<filter-name>authenticationFilter</filter-name>
<url-pattern>/secured/*</url-pattern>
</filter-mapping>


no web.xml é que gera o 404.....

Como fazer pra resolver?
Minhas libs são todas do projeto testecrud que baixei.
Eu estava com um projeto teste com uma crud de usuário funcionando normalmente, então fui testar o Login. Após mudar o web.xml e discribuir
os jsps na estrutura de pacote secured e criar as classes de segurança modulo como o exemplo fala, o projeto deixou de funcionar e não está achando o caminha da action, no caso fica dando erro 404...
Pedro, valeu a atenção..

Meu web.xml....

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlnssi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<!-- Listener que inicializa a aplicação -->
<listener>
<listener-class>br.com.linkcom.neo.core.web.init.ContextLoaderListener</listener-class>
</listener>

<!-- Filtro para criar o contexto do NEO -->
<filter>
<filter-name>neoFilter</filter-name>
<filter-class>br.com.linkcom.neo.core.web.NeoFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>neoFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<!-- Filtro de autenticação. Verifica se o usuário está logado -->
<filter>
<filter-name>authenticationFilter</filter-name>
<filter-class>filtro.AutentificacaoFiltro</filter-class>
</filter>

<!-- Esse filtro irá barrar todo acesso anonimo à /secured/* -->
<!-- Se desejar barrar acesso anonimo à outras URLs duplique o filter-mapping e altere a url-pattern -->
<filter-mapping>
<filter-name>authenticationFilter</filter-name>
<url-pattern>/secured/*</url-pattern>
</filter-mapping>

<!-- Servlet necessário para Ajax -->
<servlet>
<servlet-name>ajaxServlet</servlet-name>
<servlet-class>br.com.linkcom.neo.view.AjaxServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ajaxServlet</servlet-name>
<url-pattern>/ajax/*</url-pattern>
</servlet-mapping>

<!-- Servlet necessário do NEO, provê JS e CSS -->
<servlet>
<servlet-name>resourceServlet</servlet-name>
<servlet-class>br.com.linkcom.neo.view.ResourceServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>resourceServlet</servlet-name>
<url-pattern>/resource/*</url-pattern>
</servlet-mapping>

<!-- Servlet necessário para os inputs select-one-path e select-one-button -->
<servlet>
<servlet-name>selecionarCadastrarServlet</servlet-name>
<servlet-class>br.com.linkcom.neo.view.SelecionarCadastrarServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>selecionarCadastrarServlet</servlet-name>
<url-pattern>/SELECIONARCADASTRAR/*</url-pattern>
</servlet-mapping>


<!-- Módulo da aplicação -->
<servlet>
<servlet-name>modulo</servlet-name>
<servlet-class>br.com.linkcom.neo.controller.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>modulo</servlet-name>
<url-pattern>/modulo/*</url-pattern>
</servlet-mapping>


<!-- Módulo seguro da aplicação, só é possível acessar esse módulo se o usuário tiver logado no sistema -->
<servlet>
<servlet-name>secured</servlet-name>
<servlet-class>br.com.linkcom.neo.controller.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>secured</servlet-name>
<url-pattern>/secured/*</url-pattern>
</servlet-mapping>



</web-app>
Eu baixei o projeto app-demo, gerei o banco e quando vou entrar no
http://localhost:8080/WebMidia/modulo/login da o 404...
Alguém pode falar onde pode ser o erro?
O famoso erro HTTP Status 404....

O fato de perguntar se o tutorial ta completo, é pq vi que escreveram
que está faltando uma parte dele...
Gostaria de saber se esse existe um tutorial COMPLETO explicando como montar a parte de autenticação e autorização no NEO.

Usei o do http://www.neoframework.org/siteneo/tutorial/ver/25/Autenticacao_e_Autorizacao
mas não tive sucesso...

 
Perfil de vitorhora -> Mensagens enviadas por vitorhora [10]
Ir para:   
Powered by JForum 2.1.7 © JForum Team