Opa,
criei uma página erro404.jsp que deve ser exibida quando o usuário entra numa url inexistente.
É no web.xm que configuro para redirecionar? Como faço isso?
Obrigado
Opa,
criei uma página erro404.jsp que deve ser exibida quando o usuário entra numa url inexistente.
É no web.xm que configuro para redirecionar? Como faço isso?
Obrigado
procure por error-page no web.xml
Oi Lucas…
Fiz o seguinte:
criei uma pasta erro e coloquei o arquivo erro404.jsp nela.
Adicionei as seguintes linhas no meu web.xml:
<error-page>
<error-code>404</error-code>
<location>/erro/erro404.jsp</location>
</error-page>
Quando busco uma url inexistente, exibe uma tela branca, sem nenhum códido html.
Adicionei um ErroController:
@Resource
public class ErroController {
@Get()
public void erro404(){
}
}
Mas continua com a tela branca.
O que estou fazendo de errado?
Obrigado.
o error-page vai direto pro jsp, não passa pelo controller…
o jsp tem que estar marcado com errorPage também (não lembro como, mas acho que é no <%@page
Você pode também apontar o notfound para um resource do vraptor.
<error-page>
<error-code>404</error-code>
<location>/erro404</location>
</error-page>
@Path()
public void erro404(){
[...]
}
E altere o filter do vraptor adicionando um dispatcher para ERROR.
<filter>
<filter-name>vraptor</filter-name>
<filter-class>br.com.caelum.vraptor.VRaptor</filter-class>
</filter>
<filter-mapping>
<filter-name>vraptor</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
Boa tarde galera!
Estou com um problema similar, mas não estou conseguindo entender um motivo para o tal.
No meu caso acontece o seguinte: optamos pela solução do garcia-jj de fazer um resource no vraptor para tratar os casos de 404… no nosso ambiente de desenvolvimento usamos o plugin do jetty (run-jetty-run), e, depois de alguns ajustes, fizemos funcionar…
Contudo, como nosso ambiente de produção é o Tomcat, passamos aos testes no mesmo, o que para nossa surpresa não funcionou… Apresenta a seguinte exceção:
Criamos um projeto de teste por aqui, para checar se não era algum tipo de implementação específica do nosso projeto que estaria atrapalhando, mas nos deparamos com o mesmo problema.
Alguém teria alguma idéia do motivo deste comportamento?
Nota: testamos fazer somente com JSP (sem o resource) e funcionou em ambos os casos.
Desde já agradeço.
Grande abraço!
colocou o dispatcher de error no filtro do vraptor?
Sim… na verdade essa exceção só ocorre quando o coloco, caso contrário aparece, no caso do Jetty, a tela de 404 do mesmo… já no tomcat, aparece a tela de NOT FOUND do navegador…
Também colocamos o
no JSP.
[quote=felipe.brito87]Sim… na verdade essa exceção só ocorre quando o coloco, caso contrário aparece, no caso do Jetty, a tela de 404 do mesmo… já no tomcat, aparece a tela de NOT FOUND do navegador…
Também colocamos o
no JSP.[/quote]
Tem que desmarcar lá no IEca a opção “exibir erros http amigáveis”.
tá dando nullpointer aqui:
linha 41… ou seja, o requestInfo.getChain está vindo null
vc está usando o spring, o guice ou o pico?
garcia-jj,
não entendi o porque da colocação… nem no windows eu estou… contudo creio que o problema não seja os navegadores, mas de qualquer forma, valeu…
Lucas,
Foi exatamente neste ponto em que paramos no debug… e estamos usando o spring…
é o chain que está null, é o request ou o response? ou nenhum deles?
Nenhum deles… rastreamos até a classe ‘org.apache.catalina.core.ApplicationFilterChain’, onde ele invoca o seguinte método (na linha 311):
Neste momento estão null o ‘this.support’ e o ‘this.servlet’…
Aqui ele lança a NullPointerException…
não parece ser culpa do VRaptor isso… é algo específico do tomcat que vc está usando… qual é a versão?
[quote=felipe.brito87]garcia-jj,
não entendi o porque da colocação… nem no windows eu estou… contudo creio que o problema não seja os navegadores, mas de qualquer forma, valeu…[/quote]
Pela informação que você me deu, entendi que poderia ser problema do browser, já que você disse que aparece a página de erro do browser. O único que faz isso é o IE.
Lucas,
Estavamos suspeitando disto, mas não chegamos a conclusão nenhuma… estamos usando o Tomcat 7.0.8…
Curioso também é que, embora façamos uma só chamada, passa duas vezes pelo método “couldNotFind”… a primeira sem problemas, a segunda gera o NullPointer…
garcia-jj,
Entendi… não me expressei da melhor maneira… quanto ao exposto, a questão é que ele lança a exceção e cai na página de 404, ou do servidor ou do browser - no nosso caso, firefox e chrome…
hum… se passa duas vezes, será que ele não tá tentando achar uma jsp que não existe?
Humm… pela manhã confiro com mais cuidado e posto a resposta…
Valeu e boa noite… ou melhor, bom dia…
Fala Lucas, tudo tranquilo!?
Dei uma olhada a mais por aqui e não consegui descobrir o motivo do problema… e o melhor é que só dá esse problema no Tomcat, no Jetty funciona na boa (neste só passa uma vez pelo ‘couldntFind’)…
Como já gastamos mais tempo do que o desejado preferimos deixar de lado essa implementação, e decidimos modificar a lógica de redirecionamento em nossa própria implementação da classe ‘DefaultResourceNotFoundHandler’.
A princípio tentamos fazer com o seguinte redirecionamento: result.use(Results.status()).movedPermanentlyTo(uri);
Funcionou, mas como a URL era alterada, o que não era desejável, a abandonamos; então passamos a usar o método ‘forwardTo’, o que, depois de alguns ajustes na página, funcionou perfeitamente.
Dessa maneira, preferimos, por ora, só fazer assim (não sei se foi a melhor solução, mas tá valendo… hehehe). Depois tentarei descobrir mais alguma coisa a respeito, e, caso consiga, posto por aqui.
Grande abraço e valeu mais uma vez pela força!
oi pessoal
acho que estou com o mesmo problema. Estou tentando configurar a página de erro 404 está dando este erro:
estou usando tomcat-7.0.25.
14/12/2012 11:40:48 org.apache.catalina.core.ApplicationDispatcher invoke
GRAVE: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:321)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at br.com.caelum.vraptor.resource.DefaultResourceNotFoundHandler.couldntFind(DefaultResourceNotFoundHandler.java:41)
at com.vibro.infra.Error404.couldntFind(Error404.java:37)
at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:71)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44)
at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91)
at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58)
at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:473)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:402)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:329)
at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:455)
at org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:324)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:193)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
14/12/2012 11:40:48 org.apache.catalina.core.StandardHostValve custom
GRAVE: Exception Processing ErrorPage[errorCode=404, location=/page404/notFound.jsp]
java.lang.NullPointerException
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:321)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at br.com.caelum.vraptor.resource.DefaultResourceNotFoundHandler.couldntFind(DefaultResourceNotFoundHandler.java:41)
at com.vibro.infra.Error404.couldntFind(Error404.java:37)
at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:71)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44)
at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91)
at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58)
at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:473)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:402)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:329)
at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:455)
at org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:324)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:193)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
alguma sugestão como resolver isso?
obrigado