VRaptor 3 com Ajax - Validação de Login

5 respostas
malikoski

Pessoal, tenho uma dúvida. Quero fazer o login do sistema uma requisição ajax(jQuery) para validar o usuário.. segue o código como exemplo:

Obs: Estou usando o VRaptor 3.

<form id="formlogin" method="POST">
				<h1 class="imagem"></h1>	
				<p><br/><br/>Matrícula: <br/> <input name="usuario.login" type="text" tabindex="1" size="15"></p>					
				<p>Senha: <br/><input name="usuario.senha" type="password" tabindex="2" size="15"></p>
				<br/><br/>
				<a href="#" title="Entrar">
					<input type="submit" name="submit" class="botao" id="submit_btn" value="" tabindex="3"> 	
				</a>
				
		 	    <script>
     				$(document).ready(function(){
     					$.ajax({
     					      type: "POST",
     					      url: "<c:url value="/login"/>",
     					      data: dataString,
     					      error: function() {
     					        $('#content').html("<h2>Login Invalido!</h2>")
     					        .append("<p>Erro</p>")
     					        .hide()
     					        .fadeIn(1500, function() {
     					          $('#content').append("<p>Tenta de novo</p>");
     					        });  
     					      }  
     					   });
     					   return false;
     				});
				</script>
			</form>

Não estou conseguindo fazer fazer mostrar a mensagem de erro caso o usuário erre a senha.
O código onde ele verifica é esse

public LoginController(SenhaDAO dao, UsuarioLogado logado, Result result) {
		
		this.dao = dao;
		this.logado = logado;
		this.result = result;
	}
	
	@Get @Path("/login")
	public void login() {}

	@Post @Path("/login")
	public void logaUsuario(Usuario usuario) {
		System.out.println("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
		if (logado.loga(usuario, this.dao)) {
			result.redirectTo(IndexController.class).lista();
		} else {
			List<String> erros = new ArrayList<String>();
			erros.add("Erro 1");
			erros.add("Erro 2");
			result.use(Results.http()).setStatusCode(400);
			result.use(Results.json()).from(erros, "erros").serialize();
//			result.redirectTo(LoginInvalidoController.class).login();
		}
			
	}
}
Como podem ver ele redirecionava para a classe logininvalido que mostrava outra página, agora quero mostrar na própria login.jsp (onde está o formulario de login) uma div com erro. Tentei com o Json, mas não consegui. Como fazer pra retornar apenas verdadeiro ou falso pra voltar pra minha função ajax no login.jsp??

Obrigado

5 Respostas

Lucas_Cavalcanti

o error do $.ajax não funcionou? passsa por lah?

malikoski

Não… do jeito que o código está no momento, ele da erro de página não encontrada (http://localhost:8080/webdip/login)

Lucas_Cavalcanti

então a url está incorreta, precisa ver qual é a certa (talvez o contexto da aplicação esteja errado, ou coisa do tipo)

Lucas_Cavalcanti

ou pode ser que o IndexController.lista() não tenha uma jsp configurada

malikoski

Eu consegui Lucas… Na verdade troquei o javascript para o evento submit do form… daí dentro dele chamo o $.ajax… ou seja antes ele não tava passando pelo $.ajax. Agora consegui de boa. Até usei efeito apagar a luz do Jquery.
Obrigado.

Criado 1 de junho de 2011
Ultima resposta 2 de jun. de 2011
Respostas 5
Participantes 2