VRaptor 3.1 Generic Controller x Validator

2 respostas
J

Estou tendo a seguinte exception usando um controlador generic tanto usando Forward ou Redirect no validator onErrorUse

Codigo:

@Post
	public void adiciona(T obj) {
		this.objeto = obj;
		this.validator.addAll(Hibernate.validate(obj));
		this.validator.onErrorUse(Results.logic()).redirectTo(getClass()).formulario();
		//.forwardTo(getClass()).formulario();
		this.daoGenerico.getDao().adiciona(obj);
		this.result.use(Results.logic()).redirectTo(getClass()).formulario();		
	}

Exception:

SEVERE: Servlet.service() for servlet default threw exception
br.com.caelum.vraptor.InterceptionException: java.lang.IllegalStateException: Some request parameter has the same name as a request attribute. It shouldn't happen, please report this bug.
   at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:77)
   at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:46)
   at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59)
   at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:48)
   at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59)
   at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:77)
   at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:46)
   at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59)
   at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42)
   at br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:41)
   at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59)
   at br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:46)
   at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:46)
   at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59)
   at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:80)
   at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:46)
   at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59)
   at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
   at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:46)
   at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59)
   at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:48)
   at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59)
   at br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:62)
   at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91)
   at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:55)
   at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88)
   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:191)
   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:293)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
   at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
   at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
   at java.lang.Thread.run(Thread.java:637)
Caused by: java.lang.IllegalStateException: Some request parameter has the same name as a request attribute. It shouldn't happen, please report this bug.
   at br.com.caelum.vraptor.validator.DefaultOutjector.castMap(DefaultOutjector.java:75)
   at br.com.caelum.vraptor.validator.DefaultOutjector.outjectRequestMap(DefaultOutjector.java:51)
   at br.com.caelum.vraptor.validator.DefaultValidator.onErrorUse(DefaultValidator.java:62)
   at br.com.tms.controller.GenericoController.adiciona(GenericoController.java:33)
   at br.com.tms.controller.CadTipoDocumentoController.adiciona(CadTipoDocumentoController.java:39)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:50)
   ... 37 more

2 Respostas

Lucas_Cavalcanti

crie a classe MyOutjector que está no final desse tópico por enquanto:

http://www.guj.com.br/posts/list/148774.java#807960

vai resolver esse problema… vou investigar esse bug…

vc poderia me mandar quais parâmetros foram mandados pra requisição qdo deu esse erro por favor?

J

Lucas Cavalcanti:
crie a classe MyOutjector que está no final desse tópico por enquanto:

http://www.guj.com.br/posts/list/148774.java#807960

vai resolver esse problema… vou investigar esse bug…

vc poderia me mandar quais parâmetros foram mandados pra requisição qdo deu esse erro por favor?

funcionou com MyOutject estou passando um objeto para gravacao com os seguintes campos

public class CadTipoDocumento() {
	@NotEmpty
	@Length(min=5, max=40)
	@Column(length=40, columnDefinition="varchar(40)", nullable=false)
        private String descricao;
	@NotEmpty
	@Length(min=5, max=40)
	@Column(length=40, columnDefinition="varchar(40)", nullable=false)
        private String especie;
        /* get set */
}

Para provocar este erro digitei no campo descricao somente 1 caracter para fazer validacao @Length estou usando GenericController.

Obrigado !!!
Joao Vitor

Criado 19 de janeiro de 2010
Ultima resposta 19 de jan. de 2010
Respostas 2
Participantes 2