Boa tarde!
Estou migrando meus projetos para o VRaptor 4 e
encontrei um problema que não estou conseguindo resolver. Quando envio
uma requisição, a mesma não passa pelo método do controller, sendo
imediatamente direcionada para o .jsp de mesmo nome correspondente, causando o erro
404 nos métodos onde não possue um .jsp com o mesmo nome. Por exemplo,
quando vou efetuar o login do usuário, o método no controller chama-se
logar, e nesse método eu redireciono para outro método chamado home caso
o usuário efetue o login. Nesse caso ele tenta achar o logar.jsp que
não existe e retorna o erro 404 no browser e no eclipse não aparece erro
nenhum. Segue abaixo os códigos:
@Controller
public class LoginController {
private Usuario usuario;
@Inject
public LoginController(Usuario usuario
) {
this.usuario = usuario;
}
@Get("/")
public void index() {}
@Post
public void logar(String email, String senha) {
Usuario usuario = usuariodao.findByEmail(email);
if(isUsuarioValido(usuario, senha)) {
configurarSessao(usuario);
result.redirectTo("/home/home");
}else {
result.include("msgUserError", Messages.MSG_INVALID_USER);
result.redirectTo(this).index();
}
}
}
<form action="${linkTo[LoginController].logar}" method="post">
<input type="text" name="email"/>
<input type="password" name="senha"/>
<input type="submit" value="Entrar"/>
</form>
--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vrapto...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-...@googlegroups.com.
Acesse esse grupo em http://groups.google.com/group/caelum-vraptor.
Para mais opções, acesse https://groups.google.com/d/optout.
@Intercepts
@RequestScoped
public class UsuarioInterceptor implements Interceptor {
private Sessao sessao;
private Result result;
public UsuarioInterceptor() {}
@Inject
public UsuarioInterceptor(Sessao sessao, Result result) {
this.sessao = sessao;
this.result = result;
}
@Accepts
public boolean accepts(ControllerMethod method) {
return method.getController().getType().getSimpleName().equalsIgnoreCase("UsuarioController");
}
@BeforeCall
public void intercept(InterceptorStack stack, ControllerMethod method, Object instance) throws InterceptionException {
if(sessao.getUsuario() != null && sessao.getUsuario().getUsuarioAdm() == Usuario.ADM_NAO) {
result.include("msgAccessError", "Acesso Negado!!!");
result.redirectTo(HomeController.class).home();
return;
}
stack.next(method, instance);
}
}