::: VRAPTOR 2 ::: Problema com preenchimento de atributos vindo de um form

5 respostas
marciobarroso

Boa-tarde,

Esta vai para quem ja trabalhou com o VRaptor, principalmente para o Guilherme da Caelum …

Estou trabalhando em um projeto piloto. Estou utilizando O framework VRaptor2, hibernate 3.1 e ajax.

Já montei todo o relacionamento de minhas entidades, mas no momento de cadastrar um novo usuário, estou tendo o seguinte erro :

53607 [http-8080-Processor24] DEBUG br.com.contactmanager.logic.UsuarioLogic  - Construindo UsuarioLogic
53607 [http-8080-Processor24] DEBUG br.com.contactmanager.logic.UsuarioLogic  - DaoFactory getInstance class br.com.contactmanager.dao.factory.DaoFactory
53607 [http-8080-Processor24] DEBUG br.com.contactmanager.logic.UsuarioLogic  - Setando hibernate.connection.pool_size com o valor 1
53617 [http-8080-Processor24] DEBUG br.com.contactmanager.logic.UsuarioLogic  - Setando hibernate.max_fetch_depth com o valor 1
53617 [http-8080-Processor24] DEBUG br.com.contactmanager.logic.UsuarioLogic  - Setando hibernate.default_batch_fetch_size com o valor 100
53617 [http-8080-Processor24] DEBUG br.com.contactmanager.logic.UsuarioLogic  - Setando hibernate.order_updates com o valor true
53617 [http-8080-Processor24] DEBUG br.com.contactmanager.logic.UsuarioLogic  - Setando hibernate.jdbc.batch_versioned_data com o valor true
53617 [http-8080-Processor24] DEBUG br.com.contactmanager.logic.UsuarioLogic  - Setando hibernate.jdbc.use_streams_for_binary com o valor true
53617 [http-8080-Processor24] DEBUG br.com.contactmanager.logic.UsuarioLogic  - Setando hibernate.cache.provider_class com o valor org.hibernate.cache.HashtableCacheProvider
53617 [http-8080-Processor24] DEBUG br.com.contactmanager.logic.UsuarioLogic  - Setando hibernate.cache.use_query_cache com o valor true
53617 [http-8080-Processor24] DEBUG br.com.contactmanager.logic.UsuarioLogic  - Setando hibernate.cache.region_prefix com o valor hibernate.test
53617 [http-8080-Processor24] DEBUG br.com.contactmanager.logic.UsuarioLogic  - Setando hibernate.query.substitutions com o valor true 1, false 0, yes 'Y', no 'N'
53627 [http-8080-Processor24] DEBUG org.apache.catalina.core.ApplicationDispatcher  - servletPath=/usuario/adicionar.invalid.jsp, pathInfo=null, queryString=null, name=null
53627 [http-8080-Processor24] DEBUG org.apache.catalina.core.ApplicationDispatcher  -  Path Based Forward
53627 [http-8080-Processor24] DEBUG org.apache.jasper.servlet.JspServlet  - JspEngine --> /usuario/adicionar.invalid.jsp
53627 [http-8080-Processor24] DEBUG org.apache.jasper.servlet.JspServlet  - 	     ServletPath: /usuario/adicionar.invalid.jsp
53627 [http-8080-Processor24] DEBUG org.apache.jasper.servlet.JspServlet  - 	        PathInfo: null
53627 [http-8080-Processor24] DEBUG org.apache.jasper.servlet.JspServlet  - 	        RealPath: D:\Marcio\_dev\servidores\apache-tomcat-5.5.15\webapps\ContactManager\usuario\adicionar.invalid.jsp
53627 [http-8080-Processor24] DEBUG org.apache.jasper.servlet.JspServlet  - 	      RequestURI: /ContactManager/usuario/adicionar.invalid.jsp
53627 [http-8080-Processor24] DEBUG org.apache.jasper.servlet.JspServlet  - 	     QueryString: usuario.login=&usuario.senha=&usuario.contato.telefone=&usuario.contato.celular=&usuario.contato.fax=&usuario.contato.email=&usuario.contato.pessoa.nome=&usuario.contato.pessoa.sobrenome=&usuario.contato.pessoa.nascimento=
53627 [http-8080-Processor24] DEBUG org.apache.jasper.servlet.JspServlet  - 	  Request Params: 
53627 [http-8080-Processor24] DEBUG org.apache.jasper.servlet.JspServlet  - 		 usuario.contato.pessoa.nascimento = 
53627 [http-8080-Processor24] DEBUG org.apache.jasper.servlet.JspServlet  - 		 usuario.contato.fax = 
53627 [http-8080-Processor24] DEBUG org.apache.jasper.servlet.JspServlet  - 		 usuario.contato.celular = 
53627 [http-8080-Processor24] DEBUG org.apache.jasper.servlet.JspServlet  - 		 usuario.contato.telefone = 
53627 [http-8080-Processor24] DEBUG org.apache.jasper.servlet.JspServlet  - 		 usuario.contato.email = 
53627 [http-8080-Processor24] DEBUG org.apache.jasper.servlet.JspServlet  - 		 usuario.senha = 
53627 [http-8080-Processor24] DEBUG org.apache.jasper.servlet.JspServlet  - 		 usuario.login = 
53627 [http-8080-Processor24] DEBUG org.apache.jasper.servlet.JspServlet  - 		 usuario.contato.pessoa.nome = 
53627 [http-8080-Processor24] DEBUG org.apache.jasper.servlet.JspServlet  - 		 usuario.contato.pessoa.sobrenome = 
53627 [http-8080-Processor24] DEBUG org.apache.catalina.core.ApplicationDispatcher  -  Disabling the response for futher output

Seguem os modelos :

package br.com.contactmanager.modelo;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Basic;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import br.com.contactmanager.modelo.util.BasePessoa;

/**
 * @author Márcio Alves Barroso
 */
@Entity
public class Pessoa extends BasePessoa implements Serializable {

	private static final long serialVersionUID = 1L;
	
	@Id @GeneratedValue
	private Long id;
	
	private String nome;
	
	private String sobrenome;
	
	@Basic
    	@Temporal(TemporalType.DATE)
	private Date nascimento;
	
	private String cpf;
	
	// Getters e Setters suprimidos
}

package br.com.contactmanager.modelo;

import java.io.Serializable;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;

import br.com.contactmanager.modelo.util.BaseContato;


/**
 * @author Márcio Alves Barroso
 */
@Entity
public class Contato extends BaseContato implements Serializable {

	private static final long serialVersionUID = 1L;
	
	@Id @GeneratedValue
	private Long id;
	
	@OneToOne(cascade=CascadeType.ALL)
    	@JoinColumn(name = "pessoa_id")
	private Pessoa pessoa;
	
	private Integer telefone;
	
	private Integer celular;
	
	private Integer fax;
	
	private String email;

	@OneToOne(cascade=CascadeType.ALL)
    	@JoinColumn(name = "equipe_id")
	private Equipe equipe;
	
	@OneToOne(cascade=CascadeType.ALL)
	@JoinColumn(name = "departamento_id")
    	private Departamento departamento;
	
	@OneToOne(cascade=CascadeType.ALL)
    	@JoinColumn(name = "tipocontato_id")
	private TipoContato tipoContato;

	public Contato() {
		pessoa = new Pessoa();
		equipe = new Equipe();
		departamento = new Departamento();
		tipoContato = new TipoContato();
	}	
	// Getters e Setters suprimidos		
}
	
package br.com.contactmanager.modelo;

import java.io.Serializable;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;

import br.com.contactmanager.modelo.Contato;


/**
 * @author Márcio Alves Barroso
 */
@Entity
public class Usuario implements Serializable {

	private static final long serialVersionUID = 1L;

	@Id @GeneratedValue
	private Long id;
	
	@OneToOne(cascade=CascadeType.ALL)
    	@JoinColumn(name = "contato_id")
	private Contato contato;
	
	private String login;
	
	private String senha;

	public Usuario() {
		contato = new Contato();
	}
	// Getters e Setters suprimidos	
}

Tenho um formulário que é usado para cadastrar um usuario.
Os campos do formulario são :

usuario.login
usuario.senha
usuario.contato.telefone
usuario.contato.celular
usuario.contato.fax
usuario.contato.email
usuario.contato.equipe.id
usuario.contato.departamento.id
usuario.contato.tipoContato.id
usuario.contato.pessoa.nome
usuario.contato.pessoa.sobrenome
usuario.contato.pessoa.nascimento
usuario.contato.pessoa.cpf

Sendo que para os campos de id, existe combos para a seleção.

Estou tendo problema quando submeto o form, pois olhando a query string da url, não existem todos os campos lá, só alguns.

Será que existe alguma configuração especial para fazer este form funcionar ?

Tenho no vraptor.xml o mapeamento da minha classe logic, tenho no view.properties o mapeamento do jsp.

Estou submentendo o form em usuario.adicionar.logic sendo que meu componente de negócio é o usuario e o método é adicionar.

Gostaria de uma sugestão de como resolver este problema.

[ :smiley: ]

5 Respostas

A

Vc nao tem que colocar a anotacao @component em cima de sua classe para dizer que ele eh um componente nao? E nao tem que colocar anotacoes para dizer qual campo vc quer pegar do formulario ou nao?

Alberto

T

Galera, blz!

Márcio, dá uma olha no seu VRaptor.xml, a grande parte dos meus erros quando eu estou utilizando são coisinhas bobas que deixei de implementar no meu vraptor.xml. E outra você implementou o “DaoInterceptor”?

Valeu?

Um abraço,

Tubarão - Udia / MG

Guilherme_Silveira

Tudo bem Marcio?

Qual versao do VRaptor2 vc esta utilizando? 2.0.2 ou 2.0.3? (2.0.3 saiu essa semana)

Seria uma boa voce mostrar o codigo da sua classe de logica para ver se o problema esta na sua configuracao do vraptor.

Mas olhando o codigo do seu modelo, voce ja tentou adicionar na mao (atraves de um metodo main mesmo) um contato para ver se esta tudo ok?

E parece que o erro eh de conversao/validacao pois o vraptor redireciona para invalid…

Abraco

Guilherme

marciobarroso

Guilherme Silveira:
Tudo bem Marcio?

Qual versao do VRaptor2 vc esta utilizando? 2.0.2 ou 2.0.3? (2.0.3 saiu essa semana)

Seria uma boa voce mostrar o codigo da sua classe de logica para ver se o problema esta na sua configuracao do vraptor.

Mas olhando o codigo do seu modelo, voce ja tentou adicionar na mao (atraves de um metodo main mesmo) um contato para ver se esta tudo ok?

E parece que o erro eh de conversao/validacao pois o vraptor redireciona para invalid…

Abraco

Guilherme

Adicionar na mão funciona … mas qdo tento fazer no browser da crach …

Estou quase desistindo dessa implementação …

me ajudem …

Guilherme_Silveira

Olhando denovo o codigo, parece que eh problema de html!?

Mande a url, parece que ela nao esta com os parametros do seu form? Isso deve ser coisa de html

Abraco

Criado 2 de junho de 2006
Ultima resposta 13 de jul. de 2006
Respostas 5
Participantes 4