redirect muda o fluxo no cliente, ou seja, o browser acessa uma nova URL.
forware muda o fluxo no servidor SEM o cliente saber, ou seja, a página vai seguir executando para onde você indicou sem o browser ser redirecionado.
O que você pode ter feito é redirecionar a página para ela mesma N vezes, sendo assim o firefox diz que houve excesso de redirecionamentos e lança esse erro. Você pode mostrar melhor seu controller para que pudessemos entender?
Se você tiver isso:
public void index() {
result.use(logic()).redirectTo(IndexController.class).index();
}
packagebr.com.jcomputacao.vraptor.interceptor;import staticbr.com.caelum.vraptor.view.Results.logic;importbr.com.caelum.vraptor.InterceptionException;importbr.com.caelum.vraptor.Intercepts;importbr.com.caelum.vraptor.Result;importbr.com.caelum.vraptor.core.InterceptorStack;importbr.com.caelum.vraptor.interceptor.Interceptor;importbr.com.caelum.vraptor.resource.ResourceMethod;importbr.com.jcomputacao.vraptor.blank.IndexController;importbr.com.jcomputacao.vraptor.model.Usuario;@InterceptspublicclassAuthorizationInterceptorimplementsInterceptor{privatefinalUsuariousuario;privatefinalResultresult;publicAuthorizationInterceptor(Usuariousuario,Resultresult){this.usuario=usuario;this.result=result;}publicbooleanaccepts(ResourceMethodmethod){return!method.getMethod().isAnnotationPresent(Open.class)&&!method.getResource().getType().isAnnotationPresent(Open.class);}@Overridepublicvoidintercept(InterceptorStackstack,ResourceMethodmethod,ObjectresourceInstance)throwsInterceptionException{if(usuario.getPessoaFisica()==null){System.out.println("Usuário não logado!");result.use(logic()).forwardTo(IndexController.class).index();}else{stack.next(method,resourceInstance);}}}
Bom, agora eu tenho um outro problema que é o seguinte: Quando eu acesso minha index e clico numa opção que não está @Open (ou seja, aberta pra todos) ele me retorna um System.out.println("Usuário não logado!"). Então aí eu tento me logar e ele não faz a lógica do login e ainda por cima dá "Página não existente. 404".
Entretanto, quando acesso a index e direto faço o login ele executa a lógica e redireciona normal
:cry:
katsukawa
Resolvido!!
Erro tosco pessoal!!
Na verdade a lógica demora um pouco pra entrar na minha cabeça…
Eu to usando a lógica de validação que foi mostrada no tutorial da Caelum. O @Open deve estar em todos os métodos abertos para qualquer usuário, incluindo visitante.
O problema era que meu interceptor estava dando redirectTo (quando usuario não está logado) para meu médoto index na classe index. E meu index não estava anotado como @Open. Então ele entrava em looping pq quando eu acessava meu projeto eu já estaria deslogado então ele entraria no interceptor e o interceptor mandaria denovo para o index e assim por diante.
Foi essa a solução, anotar com @Open o meu index… Estagiário só se fu…!! :oops: :lol: