Garcia,
OK, um forward realmente se encaixa melhor.
Obrigado.
Mas ainda sobre a stacktrace do redirect…
Segue:
@Path("/produtos")
public void adiciona(final Produto produto, List<UploadedFile> imagem) {
result.on(Exception.class).redirectTo(ProdutosController.class).novo(); // REDIRECT
...
dao.salva(produto);
...
atribuiImagensAoProduto(produto, imagem);
...
result.redirectTo(ProdutosController.class).lista();
}
public void salva(Produto produto) {
if (true) {
throw new HibernateException("teste");
}
sessao.persist(produto);
}
Stacktrace no browser:
org.hibernate.HibernateException: teste
br.com.bsbmotos.dao.ProdutoDao.salva(ProdutoDao.java:27)
br.com.bsbmotos.controller.ProdutosController.adiciona(ProdutosController.java:81)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:57)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:69)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:90)
br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.util.hibernate.HibernateTransactionInterceptor.intercept(HibernateTransactionInterceptor.java:45)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:44)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:81)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.multipart.CommonsUploadMultipartInterceptor.intercept(CommonsUploadMultipartInterceptor.java:102)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
Log VRaptor apartir da chamada ao método adiciona.
15:58:49,750 DEBUG [ExecuteMethodInterceptor] Invoking ProdutosController.adiciona(Produto, List)
15:58:58,128 DEBUG [DefaultExceptionMapper] find for exception class org.hibernate.HibernateException
15:58:58,128 DEBUG [DefaultExceptionMapper] found exception mapping: class java.lang.Exception -> br.com.caelum.vraptor.core.ExceptionRecorder@7e17a4
15:58:58,128 DEBUG [ExceptionHandlerInterceptor] handling exception class org.hibernate.HibernateException
15:58:58,128 DEBUG [DefaultListableBeanFactory] Creating instance of bean 'defaultLogicResult'
15:58:58,130 DEBUG [DefaultListableBeanFactory] Returning cached instance of singleton bean 'objenesisProxifier'
15:58:58,131 DEBUG [DefaultListableBeanFactory] Returning cached instance of singleton bean 'defaultRouter'
15:58:58,133 DEBUG [DefaultListableBeanFactory] Returning cached instance of singleton bean 'httpServletRequestProvider'
15:58:58,134 DEBUG [DefaultListableBeanFactory] Returning cached instance of singleton bean 'httpServletResponseProvider'
15:58:58,135 DEBUG [DefaultListableBeanFactory] Returning cached instance of singleton bean 'br.com.caelum.vraptor.ioc.spring.SpringBasedContainer'
15:58:58,136 DEBUG [DefaultListableBeanFactory] Creating instance of bean 'defaultPathResolver'
15:58:58,138 DEBUG [DefaultListableBeanFactory] Creating instance of bean 'defaultFormatResolver'
15:58:58,139 DEBUG [DefaultListableBeanFactory] Returning cached instance of singleton bean 'httpServletRequestProvider'
15:58:58,144 DEBUG [DefaultListableBeanFactory] Returning cached instance of singleton bean 'defaultAcceptHeaderToFormat'
15:58:58,144 DEBUG [DefaultListableBeanFactory] Finished creating instance of bean 'defaultFormatResolver'
15:58:58,144 DEBUG [DefaultListableBeanFactory] Finished creating instance of bean 'defaultPathResolver'
15:58:58,145 DEBUG [DefaultListableBeanFactory] Returning cached instance of singleton bean 'defaultTypeNameExtractor'
15:58:58,146 DEBUG [DefaultListableBeanFactory] Finished creating instance of bean 'defaultLogicResult'
15:58:58,146 DEBUG [DefaultLogicResult ] redirecting to class ProdutosController
15:58:58,156 DEBUG [ParanamerNameProvider] Found parameter names with paranamer for ProdutosController.novo() as []
15:58:58,156 DEBUG [DefaultLogicResult ] redirecting to /bsbmotos/produtos/novo
15:58:58,156 DEBUG [CommonAnnotationBeanPostProcessor] Invoking destroy method on bean 'sessionCreator': public void br.com.caelum.vraptor.util.hibernate.SessionCreator.destroy()
15:58:58,156 DEBUG [VRaptor ] VRaptor ended the request
Isso aê, valeu.