Vraptor não passa os parametros (RESOLVIDO)

Bom dia pessoal, estou passando uma aplicação em Struts para Vraptor, so que estou tendo alguns problemas.

Tenho uma pagina de login, que deve passar o objeto usuario para o metodo logar da classe LoginController, e ai acontece o erro, pois o objeto usuario parece que não está sendo passado, ele fica null.

Metodo Logar

@Path("/logar")
public void logar(Usuario u){
				
	this.usuario = new UsuarioDao().login(this.conn.getConnectionMySql(), u);
		
	if (this.usuario.getUser().equals("")){
			
		result.redirectTo(LoginController.class).login();
			
	}else{
			
		result.redirectTo(AdminController.class).Admin();
			
	}
		
}

Formulario que passa o usuario

<form action="<c:url value="/logar" />" method="post">
    	<p><label>Usuário</label><br /><input type="text" name="usuario.user" size="35" class="campos"></p><br>
    	<p><label >Senha</label><br /><input type="password" name="usuario.senha" size="35" class="campos"></p><br>
    	<input type="submit" name="btn_submit" value="Entrar" class="botao" />&nbsp;&nbsp;&nbsp;&nbsp;
        <input type="reset" name="btn_voltar" value="Cancelar" class="botao" />    	
</form>

Objeto Usuario

import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.ioc.SessionScoped;

@Component
@SessionScoped
public class Usuario {
	
	private String user;
	private String senha;
	
	public String getUser() {
		return user;
	}
	public void setUser(String user) {
		this.user = user;
	}
	public String getSenha() {
		return senha;
	}
	public void setSenha(String senha) {
		this.senha = senha;
	}	

}

Alguém teria uma idéia do que está errado??
Valew pessoal

[quote=AndersonQuinteiro]Bom dia pessoal, estou passando uma aplicação em Struts para Vraptor, so que estou tendo alguns problemas.

Tenho uma pagina de login, que deve passar o objeto usuario para o metodo logar da classe LoginController, e ai acontece o erro, pois o objeto usuario parece que não está sendo passado, ele fica null.

Metodo Logar

@Path("/logar")
public void logar(Usuario u){
				
	this.usuario = new UsuarioDao().login(this.conn.getConnectionMySql(), u);
		
	if (this.usuario.getUser().equals("")){
			
		result.redirectTo(LoginController.class).login();
			
	}else{
			
		result.redirectTo(AdminController.class).Admin();
			
	}
		
}

Formulario que passa o usuario

<form action="<c:url value="/logar" />" method="post">
    	<p><label>Usuário</label><br /><input type="text" name="usuario.user" size="35" class="campos"></p><br>
    	<p><label >Senha</label><br /><input type="password" name="usuario.senha" size="35" class="campos"></p><br>
    	<input type="submit" name="btn_submit" value="Entrar" class="botao" />&nbsp;&nbsp;&nbsp;&nbsp;
        <input type="reset" name="btn_voltar" value="Cancelar" class="botao" />    	
</form>

Objeto Usuario

import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.ioc.SessionScoped;

@Component
@SessionScoped
public class Usuario {
	
	private String user;
	private String senha;
	
	public String getUser() {
		return user;
	}
	public void setUser(String user) {
		this.user = user;
	}
	public String getSenha() {
		return senha;
	}
	public void setSenha(String senha) {
		this.senha = senha;
	}	

}

Alguém teria uma idéia do que está errado??
Valew pessoal[/quote]

mude o parametro de “u” para “usuario” e faz um teste

@Path("/logar")
public void logar(Usuario usuario){ //esse parametro deve ser escrito da mesma forma que no name dos seus inputs do html
				
	this.usuario = new UsuarioDao().login(this.conn.getConnectionMySql(), usuario);
		
	if (this.usuario.getUser().equals("")){
			
		result.redirectTo(LoginController.class).login();
			
	}else{
			
		result.redirectTo(AdminController.class).Admin();
			
	}
		
}

Opa DaniloAndrade, obrigado pelo retorno.

Então fiz a alteração

@Path("/logar")
public void logar(Usuario usuario){
				
	this.usuario = new UsuarioDao().login(this.conn.getConnectionMySql(), usuario);
		
	if (this.usuario.getUser().equals("")){
			
		result.redirectTo(LoginController.class).login();
			
	}else{
			
		result.redirectTo(AdminController.class).Admin();
			
	}
		
}

Só que acontece o mesmo erro, retorna a pagina

type Exception report

message exception raised, check root cause for details: java.lang.NullPointerException

description The server encountered an internal error that prevented it from fulfilling this request.

exception

br.com.caelum.vraptor.InterceptionException: exception raised, check root cause for details: java.lang.NullPointerException
	br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:96)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:89)
	br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:71)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:48)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:23)
	br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
	br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58)
	br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
root cause

java.lang.NullPointerException
	br.com.agenda.controlador.LoginController.logar(LoginController.java:31)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	java.lang.reflect.Method.invoke(Unknown Source)
	br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:61)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:89)
	br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:71)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:48)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:23)
	br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
	br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58)
	br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.37 logs.

Eu nao vi seu log de erro antes da alteraçao que eu falei , mas agora pelo que eu vi no log ele esta entrando no metodo do seu controller mas ta dando erro na linha 31 da sua classe LoginController, como vc nao colocou a classe toda não tem como eu dizer exatamente onde esta o erro, mas por dedução o erro acontece na chamada do equals no if do metodo logar

Opa desculpa Danilo, segue a classe completa

package br.com.agenda.controlador;

import br.com.agenda.dao.UsuarioDao;
import br.com.agenda.dominio.Usuario;
import br.com.agenda.jdbc.ConnectionFactory;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;

@Resource
public class LoginController {
	
	private final ConnectionFactory conn;
	private final Result result;
	private Usuario usuario;
	
	public LoginController(Usuario user, ConnectionFactory conn, Result result) {
		this.conn = conn;
		this.result = result;
		this.usuario = user;
	}
		
	@Path("/login/")
	public void login(){}
	
	@Path("/logar")
	public void logar(Usuario usuario){
				
		this.usuario = new UsuarioDao().login(this.conn.getConnectionMySql(), usuario);
		
		if (this.usuario.getUser().equals("")){
			
			result.redirectTo(LoginController.class).login();
			
		}else{
			
			result.redirectTo(AdminController.class).Admin();
			
		}
		
	}
		
}

Agora sim consegui enxergar, o erro é no if (this.usuario.getUser().equals("")), pois o usuario que retorna é null.
É que no meu UsuarioDao, que valida o usuario, caso ele não encontra ele retorna um usuario null e estou validando no if se o user do usuario é vazio.
Obrigadão Danilo
Valew mesmo.

vou dar algumas dicas

mude a o seus Daos, pra receber as conections no construtor

ex:

new UsuarioDao(this.conn.getConnectionMySql()).login(usuario);

crie um metodo no sua classe usuario que valide se usuario esta logado ou não

if(!usuario.ehValido()){// no metodo ehValido vc faz a sua logica de verificação 
// mais codigo aqui 
}else{
// mais codigo
}

Opa Danilo, muito obrigado, vou seguir suas dicas e fazer as alterações.

Valew.