Exceção intermitente ao dar submit no VRaptor

5 respostas
G

Pessoal, Fiquei algumas horas debugando meu código e tentando algumas outras coisas mas ainda não encontrei a solução pra isso. Por algum motivo, às vezes quando dou um submit no meu form, é gerado a seguinte exceção:

br.com.caelum.vraptor.InterceptionException: java.lang.IllegalArgumentException: wrong number of arguments
	at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:87)
	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.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:89)
	at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)
	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.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.meu.site.interceptor.GoogleKeyInterceptor.intercept(GoogleKeyInterceptor.java:34)
	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.util.jpa.JPATransactionInterceptor.intercept(JPATransactionInterceptor.java:51)
	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.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83)
	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.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.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.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:48)
	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.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69)
	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.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:23)
	at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
	at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58)
	at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
	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.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:851)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:278)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300)
	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)
Caused by: java.lang.IllegalArgumentException: wrong number of arguments
	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:61)
	... 51 more

exemplo do form:

<form method="post" id="meuForm" action="<c:url value="/criar"/>">
...
<input type="text" id="user_name" name="user.name" class="l" />
<input id="user_password" name="user.password" maxlength="20" type="password" class="l" />
...
<input name="create_submit" type="submit" value="gravar" class="l" />
</form>

Alguém faz alguma idéia do que possa ser?

Abraço

5 Respostas

guivirtuoso

Como está sua Controller ?

G

Esse é o método que o form executa. Tinha colocado um print no começo do método pra ver se pelo menos ele chegava a entrar, mas nem isso faz. lembrando que isso é intermitente, hora acontece outra não.

@Public
	@Post ("/criar")
	public void criar(final User user, final String passwordConfirmation) {
		final boolean emailExists = userDAO.exists(user.getEmail());		
		validator.checking(new Validations(){{
			that(!emailExists, "user.email", "message_user_unavailable");
			that(user.getPassword().equals(passwordConfirmation), "passwordConfirmation" , "validation_invalid_password_confirmation");
		}});    
 
		validator.onErrorRedirectTo(this).create();
		user.setCode(new String(generateMD5(affiliate)));
		userDAO.save(user);
		userSession.login(user);
		sendWelcomeEmail(user);

		result.redirectTo(this).list(1);
	}
guivirtuoso

No seu form onde está “passwordConfirmation” ???

Seria bom tbm vc ler: http://vraptor.caelum.com.br/documentacao/resources-rest/
:arrow: Path com injeção de variáveis

E verificar se sua form está mandando da forma correta para o controller oq ele está esperando, que no seu caso são dois argumentos e não somente User.
(Pelo menos é oq o form indica, que apenas User está sendo passado)

:wink:

G

guivirtuoso:
No seu form onde está “passwordConfirmation” ???

Seria bom tbm vc ler: http://vraptor.caelum.com.br/documentacao/resources-rest/

E verificar se sua form está mandando da forma correta para o controller oq ele está esperando, que no seu caso são dois argumentos e não somente User.
(Pelo menos é oq o form indica, que apenas User está sendo passado)

:wink:

pior que tá, ja inspecionei os elementos e verifiquei pra ver se derrepente não estaria passando em branco, mas passa do mesmo jeito de quando dá certo.

<input id="user_confirmation" name="passwordConfirmation" maxlength="20" type="password" class="l" />

O que eu não entendo é que na primeira vez que eu executo ele chama o método, passa todos os parâmetros certinho. ai tento de novo da essa exceção. dou um refresh na página pode funcionar ou não, e assim vai… meio que “na sorte”.

Lucas_Cavalcanti

vc tá com a última versão do VRaptor? a 3.4.0?

como está o método list? ele é get?

Criado 19 de outubro de 2011
Ultima resposta 19 de out. de 2011
Respostas 5
Participantes 3