[VRaptor] Configuração de página de erro no web.xml
15 respostas
G
gutomarzagao
Estou tentando configurar a aplicação pra, ao acontecer algum erro (exceção, 404, 500, etc), o usuário ser direcionado pra home.
O problema é que eu preciso executar um pré processamento antes de exibir a página. Pra isso eu tentei configurar assim o web.xml:
<error-page>
<location>/</location>
</error-page>
Ou seja, ao acontecer algum erro, o usuário deve ser direcionado pra www.meusite.com.br/
Mas isso não tá funcionando. Quando eu tento acessar uma página inválida ou forço acontecer uma exceção aparece a mensagem de erro do navegador:
Inclusive, quando eu acesso a url "/", funciona...
Esse resource not found não pode ser da url de erro que eu to testando? Pra testar o mapeamento de erro padrão, eu to tentando acessar uma url inválida, "localhost:8080/url-invalida" por exemplo. Essa URL que não tem controller. Mas minha intenção é tratar esses casos através no mapeamento de erro, direcionando pro controller que responde por "/".
L
Lucas_Cavalcanti
Estranho… preciso investigar isso…
em todo caso, algum motivo especial para não ter uma página dedicada de erro 500?
G
gutomarzagao
Lucas Cavalcanti:
Estranho… preciso investigar isso…
em todo caso, algum motivo especial para não ter uma página dedicada de erro 500?
Tem sim. É que eu to trabalhando com Scrum. Scrum é uma metodologia ágil que separa o desenvolvimento em ciclos de tempo definido. Em cada ciclo, só é implementado o que foi combinado previamente, pra dar tempo de ter, no final desse ciclo, um produto 100% funcional. Enfim, a página dedicada de erro não tá prevista no ciclo atual de desenvolvimento.
Além disso, eu queria direcionar qualquer erro pra página inicial, porque lá tem um Google Analytics onde eu posso rastrear se a pessoa tentou acessar alguma página inválida. Isso ajudaria muito a priorizar as tarefas dos próximos ciclos de desenvolvimento. A grosso modo, funcionaria mais ou menos dessa forma:
Muita gente acessando páginas inválidas: vamos fazer uma página de erro dedicada com uma ferramenta de busca e principais links do site.
Um número médio de pessoas estão caindo em URL’s inválidas: vamos fazer só uma página de erro simples só com principais links.
Se quase ninguém tá caindo em URL’s inválidas: vamos deixar essa demanda pro futuro e nos preocupar com o que é mais prioritário no momento.
O nome disso é “desenvolvimento orientado a métricas”
Você teria mais alguma sugestão?
PS: muito obrigado pela ajuda. Você parece ser a única pessoa que entende de VRaptor! E dá pra ver que entende bem
L
Lucas_Cavalcanti
Pensando em experiência do usuário é bem ruim tentar fazer alguma ação e ser enviado para a página inicial.
Você deve gastar só 10 min pra escrever uma página 500 básica falando que deu um erro e colocando um link pra home.
O desenvolvimento orientado a métricas deve ser usado pra funcionalidades que vão exigir um certo esforço, o que não é o caso.
Aposto que vc gastou mais tempo escrevendo nesse tópico do que vc gastaria escrevendo um html estático de erro 500
Em todo caso, isso não esconde o fato de que isso é um bug do VRaptor, mas fica a dica.
G
gutomarzagao
Lucas Cavalcanti:
Pensando em experiência do usuário é bem ruim tentar fazer alguma ação e ser enviado para a página inicial.
Você deve gastar só 10 min pra escrever uma página 500 básica falando que deu um erro e colocando um link pra home.
O desenvolvimento orientado a métricas deve ser usado pra funcionalidades que vão exigir um certo esforço, o que não é o caso.
Aposto que vc gastou mais tempo escrevendo nesse tópico do que vc gastaria escrevendo um html estático de erro 500
Em todo caso, isso não esconde o fato de que isso é um bug do VRaptor, mas fica a dica.
Você tem razão. Mas a questão é que nós nunca tínhamos trabalhado com o VRaptor, não dava pra saber qual seria o esforço de fazer uma página de erro. Tem que levar em conta o tempo de aprendizado. Esse projeto tá andando em marcha lenta ainda por conta disso, hehe.
Mas agora que eu já sei que se direcionar pro jsp funciona, é isso que eu vou fazer
De qualquer forma, minha curiosidade permanece: isso que aconteceu é um bug mesmo do VRaptor? Você tentou/conseguiu reproduzir o erro?
E só mais uma curiosidade: você trabalha na Caelum? Mantém o VRaptor?
G
gutomarzagao
Ah Lucas,
Teve uma coisa que eu esqueci de relatar. Esse mapeamento de error-page (sem especificar código de erro para o qual eu pretendo tratar) só funciona em servlet 3.0. Mas o projeto padrão do VRaptor vem com o cabeçalho do web.xml como se fosse servlet 2.5. Ou seja, pra fazer funcionar esse mapeamento de erro genérico, eu tive que mudar o cabeçalho do arquivo. O VRaptor funciona em cima do servlet 3.0, certo?
L
Lucas_Cavalcanti
Sim, tinha estranhado que você não tinha especificado o código ou a exception…
o VRaptor funciona tranquilamente em servlet 3.0. Inclusive vc não precisa declarar o filtro do VRaptor no web.xml em ambientes servlet 3.0
G
gutomarzagao
Lucas Cavalcanti:
Sim, tinha estranhado que você não tinha especificado o código ou a exception…
o VRaptor funciona tranquilamente em servlet 3.0. Inclusive vc não precisa declarar o filtro do VRaptor no web.xml em ambientes servlet 3.0
Hmm, saquei.
Mas vc chegou a ver minha mensagem anterior? Sabe dizer se o problema é com o VRaptor?
L
Lucas_Cavalcanti
Não sei se é um bug do VRaptor ou é porque o VRaptor é um filtro e filtros não funcionam bem com páginas de erro. Não tive tempo de tentar reproduzir ainda.
Não trabalho mais na Caelum, mas ainda mantenho o VRaptor sim.
G
gutomarzagao
Lucas Cavalcanti:
gutomarzagao:
De qualquer forma, minha curiosidade permanece: isso que aconteceu é um bug mesmo do VRaptor? Você tentou/conseguiu reproduzir o erro?
E só mais uma curiosidade: você trabalha na Caelum? Mantém o VRaptor?
Não sei se é um bug do VRaptor ou é porque o VRaptor é um filtro e filtros não funcionam bem com páginas de erro. Não tive tempo de tentar reproduzir ainda.
Não trabalho mais na Caelum, mas ainda mantenho o VRaptor sim.
Parabéns pelo trabalho de vocês. Até agora, um dos melhores frameworks web que eu já vi…
A documentação que poderia melhorar. Não dá pra conhecer o framework a fundo com o que tem no site…