VRaptor - RequestDispatcher

5 respostas
Cerjr

Olá pessoal,

Estou usando o VRaptor e preciso fazer algo como um DispatchAction do Strus.
para tentar solucionar este problema estou usando o RequestDispacher que funciona
mas logo após redirecionar esta gerando a seguinte exceção:

05/09/2008 17:10:00 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet vraptor2 threw exception
java.lang.IllegalStateException: Cannot forward after response has been committed
      at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:312)
      at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
      at org.vraptor.view.RegexViewManager.directForward(RegexViewManager.java:70)
      at org.vraptor.view.RegexViewManager.forward(RegexViewManager.java:64)
      at org.vraptor.view.OverridableViewManager.forward(OverridableViewManager.java:66)
      at org.vraptor.interceptor.ViewInterceptor.intercept(ViewInterceptor.java:36)
      at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
      at org.vraptor.interceptor.OutjectionInterceptor.intercept(OutjectionInterceptor.java:36)
      at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
      at org.vraptor.interceptor.ExecuteLogicInterceptor.intercept(ExecuteLogicInterceptor.java:38)
      at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
      at org.vraptor.interceptor.SettingAndValidationInterceptor.intercept(SettingAndValidationInterceptor.java:131)
      at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
      at org.vraptor.interceptor.InjectionInterceptor.intercept(InjectionInterceptor.java:41)
      at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
      at org.vraptor.interceptor.ComponentLookupInterceptor.intercept(ComponentLookupInterceptor.java:58)
      at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
      at org.vraptor.plugin.jpa.JavaPersistenceInterceptor.intercept(JavaPersistenceInterceptor.java:67)
      at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
      at org.vraptor.plugin.interceptor.ContinueToFlowInterceptor.intercept(ContinueToFlowInterceptor.java:27)
      at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
      at es.vraptor.AuthorizationInterceptor.intercept(AuthorizationInterceptor.java:50)
      at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
      at es.vraptor.ExceptionsInterceptor.intercept(ExceptionsInterceptor.java:15)
      at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
      at org.vraptor.plugin.interceptor.ConcatenateInterceptorsLogicFlow.execute(ConcatenateInterceptorsLogicFlow.java:41)
      at org.vraptor.InterceptorStack.intercept(InterceptorStack.java:49)
      at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
      at org.vraptor.interceptor.FlashScopeInterceptor.intercept(FlashScopeInterceptor.java:22)
      at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
      at org.vraptor.interceptor.RegisterAttributesInteceptor.intercept(RegisterAttributesInteceptor.java:38)
      at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
      at org.vraptor.core.VRaptorExecution.execute(VRaptorExecution.java:98)
      at org.vraptor.core.DefaultController.execute(DefaultController.java:46)
      at org.vraptor.VRaptorServlet.service(VRaptorServlet.java:70)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      at org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
      at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
      at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
      at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
      at java.lang.Thread.run(Unknown Source)
05/09/2008 17:10:00 org.apache.catalina.core.StandardHostValve custom
SEVERE: Exception Processing ErrorPage[exceptionType=java.lang.Throwable, location=/brucutu/exception/error.jsp]
java.lang.IllegalStateException
      at org.apache.coyote.Response.reset(Response.java:297)
      at org.apache.catalina.connector.Response.reset(Response.java:658)
      at org.apache.catalina.connector.Response.reset(Response.java:925)
      at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:417)
      at org.apache.catalina.core.StandardHostValve.throwable(StandardHostValve.java:271)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
      at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
      at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
      at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
      at java.lang.Thread.run(Unknown Source)

Alguém sabe como fazer isso??

5 Respostas

m0ska

Se é o que eu estou pensando, vc pode chamar outra logic através do arquivo
views.properties

Ex.:

almoxarifado.remove.ok = almoxarifado.listAll.logic

Espero ter ajudado.

kaoe

talvez se você anotar o metodo como @Viewless ou algo do genero (nao lembro muito bem) deve parar de dar este erro.

Cerjr

m0ska:
Se é o que eu estou pensando, vc pode chamar outra logic através do arquivo
views.properties

Ex.:

almoxarifado.remove.ok = almoxarifado.listAll.logic

Espero ter ajudado.

bem,
não era exatamente isso que eu queria fazer, pois preciso direcionar para outro logic dependendo
do parâmetro que eu recebo.

vou tentar fazer como o kaoe falou…

brigadão pessoal.

marciocamurati

acho que a solução é realmente a que o kaoe sugeriu utilizando essa annotation @Viewless o VRaptor “cancela” o foward que ele faria ao concluir a execução da Logic, no caso se você fizer o injection do HttpResponse no seu Component terá total controle de fazer o dispatch para qualquer “lugar” que você precise.

[]s

Cerjr

O @Viewless funcionou…

Valeu pessoal!

Criado 5 de setembro de 2008
Ultima resposta 9 de set. de 2008
Respostas 5
Participantes 4