jQuery + vRaptor + Controller + JDBC

2 respostas
P

[size=18]Bom Dia!!!

[b]Estou com um form onde disparo um get no jQuery para o controller que usa o vRaptor 3 e preciso que retorne um jSon com a mensagem após executar um sql no jdbc. Isso sempre funcionou … pelo menos em todos os métodos dos controllers que desenvolvo.

Ocorre que há uns 20 dias ocorre algo estranho, após executar o método no controller, como a mensagem …:
[/b]

<a class="mention" href="/u/get">@Get</a>

<a class="mention" href="/u/path">@Path</a>("/avaliacao/gravarAvaliacaoJson.json")

public void gravarAvaliacaoJson(Avaliacao avaliacao) {

if((avaliacao.getCidadao().getId()!=null)&&(avaliacao.getTurma().getId()!=null)

&&((avaliacao.getPeriodoAvaliativo1().getStatusAvaliativo().getId()!=null)

||(avaliacao.getPeriodoAvaliativo2().getStatusAvaliativo().getId()!=null)

||(avaliacao.getPeriodoAvaliativo3().getStatusAvaliativo().getId()!=null)

||(avaliacao.getPeriodoAvaliativo4().getStatusAvaliativo().getId()!=null)

||(avaliacao.getPeriodoAvaliativo5().getStatusAvaliativo().getId()!=null))){        	

avaliacao.setUsuario(this.usuarioWeb.getUsuario());        	

avaliacao = new AvaliacaoDao().gravarAvaliacao(avaliacao);

}    	

// até aqui o método ocorre tudo normal, grava no BD, retorna a mensagem … porém doravante … não funciona …

this.result.use(Results.json()).withoutRoot().from(avaliacao).include(“msg”).serialize();    	

/*

a classe Avaliacao contem o objeto (classe) Mensagem que contém o objeto (texto) descricao

*/

}


… no console do eclipse retorna o erro …:

May 14, 2012 11:16:42 AM org.apache.catalina.core.StandardWrapperValve invoke

SEVERE: Servlet.service() for servlet [default] in context with path [/letrando] threw exception

br.com.caelum.vraptor.InterceptionException: There are validation errors and you forgot to specify where to go. Please add in your method something like:

validator.onErrorUse(page()).of(AnyController.class).anyMethod();

or any view that you like.

If you didnt add any validation error, it is possible that a conversion error had happened.

at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:61)

at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)

at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)

at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)

at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)

at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:86)

at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)

at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)

at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42)

at br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)

at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)

at br.gov.sp.guarulhos.letrando.infra.NoCacheInterceptor.intercept(NoCacheInterceptor.java:42)

at br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)

at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)

at br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:46)

at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)

at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)

at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:81)

at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)

at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)

at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)

at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)

at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)

at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)

at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)

at br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)

at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)

at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)

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:240)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)

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:562)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)

at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)

at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

e no retorno do inspector do google chrome, retorno a mensagem normal.

o Interceptor é …:

package br.gov.sp.guarulhos.letrando.interceptor;

import br.com.caelum.vraptor.InterceptionException;

import br.com.caelum.vraptor.Intercepts;

import br.com.caelum.vraptor.Result;

import br.com.caelum.vraptor.core.InterceptorStack;

import br.com.caelum.vraptor.interceptor.Interceptor;

import br.com.caelum.vraptor.resource.ResourceMethod;

import br.gov.sp.guarulhos.letrando.controller.IndexController;

import br.gov.sp.guarulhos.letrando.infra.Restrito;

import br.gov.sp.guarulhos.letrando.modelo.Msg;

import br.gov.sp.guarulhos.letrando.session.UsuarioWeb;

@Intercepts
public class AutorizacaoInterceptor implements Interceptor {

private Result result;
private UsuarioWeb usuarioWeb;

public AutorizacaoInterceptor(Result result, UsuarioWeb usuarioWeb){
	this.result = result;
	this.usuarioWeb = usuarioWeb;		
}

public boolean accepts(ResourceMethod method) {
	boolean teste;
	try{
		teste = !this.usuarioWeb.getLogado();
	}catch (NullPointerException e) {
		teste = true;
	}
	
	return teste && method.containsAnnotation(Restrito.class);
}

public void intercept(InterceptorStack stack, ResourceMethod method,Object resourceInstance) 
throws InterceptionException {
	this.result.redirectTo(IndexController.class).msg(new Msg(1, 0, "Erro de Sessao", "Ou voce nao acessou o sistema ou tua sessao expirou. Por gentileza, acesse o sistema pela tela de login."));			
}

}

o result jSon do vRaptor está retornando polúído …

{

“msg”: {

“descricao”: “Avaliacao gravada com sucesso.”,

“titulo”: “Obrigado”

}

}
Sistem_educ

Página de Aviso de Erro: Java Lang Exception


Atenção! Ocorreu algum problema nessa ação. Por favor, contate o administrador do sistema.





Obrigado pessoal.

[/size]

2 Respostas

Lucas_Cavalcanti

pauloah, qdo for postar código, coloque entre e

lendo o erro:

There are validation errors and you forgot to specify where to go. Please add in your method something like:
validator.onErrorUse(page()).of(AnyController.class).anyMethod();
or any view that you like.
If you didn't add any validation error, it is possible that a conversion error had happened.

mais especificamente o final:

If you didn't add any validation error, it is possible that a conversion error had happened.

ou seja, se não foi erro de validação, pode ser um erro de conversão…
tipo algum atributo numérico que foi pra requisição com letras

P

[b]NA LATA!!!
eu mandava pelo jQuery:

avaliacao1.id = 1, avaliacao2.id = null

então … dava erro mesmo.

agora mando …

avaliacao1.id = 1, avaliacao2.id = ' '

pronto …
resolvido.

Abraços … e … vou tentar colaborar por aqui também agora.
Sou usuário adépto do vivaolinux.com.br
Abraços[/b]

Criado 14 de maio de 2012
Ultima resposta 14 de mai. de 2012
Respostas 2
Participantes 2