[RESOLVIDO] Comunicação entre METODO e VIEW

7 respostas
GabrielCardelli

Galera estou lendo sobre vraptor e me veio uma duvida…

como faço para passar valores ao meu método

EX:

/mundo/buscaProduto

Ele abre um TEXTFIELD para eu digitar o ID do produto,
Porém eu quero que esse id vá para o método e ele me retorne um objeto do tipo produto.

A assinatura do método seria

public Produto buscaProduto(Long Id)

return produto ou null;

como eu poderia fazer isso?

/mundo/buscaProduto?id=1

?

abraço.

7 Respostas

Lucas_Cavalcanti

se o parâmetro do método se chamar id (e não Id como tá) é exatamente isso que vc deve fazer…

e na jsp de resultado o produto retornado vai estar disponivel via ${produto}

GabrielCardelli

Opa , valeu Lucas muito obrigado.

GabrielCardelli

Ae consegui fazer. O problema é na primeira chamada onde ainda não foi passado nenhum valor pra id, ele gera um IllegalArgumentException

br.com.caelum.vraptor.InterceptionException: java.lang.IllegalArgumentException: id to load is required for loading br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:77) br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:46) br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59) br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:48) br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59) br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:77) br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:46) br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59) br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42) br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:41) br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59) br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:46) br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:46) br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59) br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:80) br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:46) br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59) br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67) br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:46) br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59) br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:48) br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59) br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:62) br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91) br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:55) br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88)

Tentei sobrecarregar o método mais não tive sucesso.
Alguem pode ajudar?
O problema é quando não há parâmetro 1° vez que executa.

sobreira

Na verdade é IllegalArgumentException.

Você está chamando o método sem passar o argumento id.

GabrielCardelli

Sim está no console.
troquei as bolas^^

Lucas_Cavalcanti

primeiro vc tem que se perguntar se faz sentido vc chamar o buscaProduto sem passar o id…

o que vc pode fazer tb, eh fazer um if que manda pra outro lugar se não tiver id (ele vai vir null se vc não passar na requisição)

e vc disse que não consegue acessar ${produto} na jsp?
vc tah retornando um produto preenchido no método?

GabrielCardelli

Lucas, consegui resolver eu tinha tirado o retorno do método e não tinha colocado novamente agora sim ta funcionando.

Sobre o id = null eu fiz o if mais erradamente ao invez de testar o id testei o produto por isso não estava funcionando.
agora está!!!

Obrigado pela ajuda, agora já posso continuar a apostila.

Abraço

Criado 16 de janeiro de 2010
Ultima resposta 16 de jan. de 2010
Respostas 7
Participantes 3