[RESOLVIDO] - VRaptor 3.4.0 - linkTo

6 respostas
D

Para passar parametro dinamicos para o linkTo, como é feito?

Assim funciona:

<div id="gallery">
	<c:forEach items="${imagemList}" var="img">
		<img alt="Foto" src="${linkTo[ImagemController].fotoDaAcomodacao}${img.id}" />
	</c:forEach>
</div>

Assim não:

<div id="gallery">
	<c:forEach items="${imagemList}" var="img">
		<img alt="Foto" src="${linkTo[ImagemController].fotoDaAcomodacao[${img.id}]}" />
	</c:forEach>
</div>

#comofaz

6 Respostas

G

O correto é assim: ${linkTo[RateController].edit[item.id]}

Sendo RateController o nome da classe Resource, edit o método, item é meu objeto, id a propriedade.

D

garcia-jj, fiz conforme vc mostrou, mais esta dando a seguinte exception:

SEVERE: Servlet.service() for servlet jsp threw exception
net.vidageek.mirror.exception.MirrorException: Could not find getter for field id
	at net.vidageek.mirror.invoke.DefaultInvocationHandler.getterFor(DefaultInvocationHandler.java:80)
	at br.com.caelum.vraptor.http.route.JavaEvaluator.navigate(JavaEvaluator.java:64)
	at br.com.caelum.vraptor.http.route.JavaEvaluator.get(JavaEvaluator.java:46)
	at br.com.caelum.vraptor.http.route.DefaultParametersControl.fillUri(DefaultParametersControl.java:96)
	at br.com.caelum.vraptor.http.route.FixedMethodStrategy.urlFor(FixedMethodStrategy.java:80)
	at br.com.caelum.vraptor.http.route.DefaultRouter.urlFor(DefaultRouter.java:135)
	at br.com.caelum.vraptor.view.LinkToHandler$Linker.toString(LinkToHandler.java:131)
	at com.sun.el.lang.ELSupport.coerceToString(ELSupport.java:340)
	at com.sun.el.lang.ELSupport.coerceToType(ELSupport.java:370)
	at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:222)
	at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:985)
	at org.apache.jsp.WEB_002dINF.jsp.cadastros.imagem.galeria_jsp._jspx_meth_c_005fforEach_005f0(galeria_jsp.java:152)
	at org.apache.jsp.WEB_002dINF.jsp.cadastros.imagem.galeria_jsp._jspService(galeria_jsp.java:80)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:391)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
	at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:471)
	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:402)
	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:329)
	at br.com.caelum.vraptor.view.DefaultPageResult.defaultView(DefaultPageResult.java:67)
	at br.com.caelum.vraptor.interceptor.ForwardToDefaultViewInterceptor.intercept(ForwardToDefaultViewInterceptor.java:60)
	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.OutjectResult.intercept(OutjectResult.java:67)
	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.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:85)
	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.reservason.infra.ControleAcessoInterceptor.intercept(ControleAcessoInterceptor.java:43)
	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.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.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:87)
	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.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.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.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.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44)
	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 com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129)
	at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)
	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(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:679)
28/09/2011 23:25:38 org.apache.catalina.core.ApplicationContext log
SEVERE: Unhandled exception occurred whilst decorating page
br.com.caelum.vraptor.view.ResultException: org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/jsp/cadastros/imagem/galeria.jsp at line 7

4: 	<div style="margin-left: 30px;">
5: 		<div id="gallery">
6: 			<c:forEach items="${imagemList}" var="img">
7: 				<img alt="Foto" src="${linkTo[ImagemController].fotoDaAcomodacao[img.id]}" />
8: 			</c:forEach>
9: 		</div>
10: 	</div>


Stacktrace:
	at br.com.caelum.vraptor.view.DefaultPageResult.defaultView(DefaultPageResult.java:69)
	at br.com.caelum.vraptor.interceptor.ForwardToDefaultViewInterceptor.intercept(ForwardToDefaultViewInterceptor.java:60)
	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.OutjectResult.intercept(OutjectResult.java:67)
	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.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:85)
	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.reservason.infra.ControleAcessoInterceptor.intercept(ControleAcessoInterceptor.java:43)
	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.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.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:87)
	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.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.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.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.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44)
	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 com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129)
	at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)
	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(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:679)
Mesmo se eu colocar um valor fixo por exemplo:
${linkTo[ImagemController].fotoDaAcomodacao[71]}
Da o mesmo erro.
G

O mesmo erro certamente não é. Talvez um parecido. Olha a mensagem de erro:

Could not find getter for field id

Você tem essa propriedade e um getter para ela?

D

Sim tenho, tanto é que se eu fizer conforme abaixo funciona:

Um pedaço do log esta abaixo:

23:20:11,275 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ResourceLookupInterceptor
23:20:11,275 DEBUG [DefaultResourceTranslator] trying to access /cadastros/imagem/foto/acomodacao/71
23:20:11,276 DEBUG [VRaptorRequest      ] Setting imagem.id with [71]
23:20:11,276 DEBUG [DefaultResourceTranslator] found resource [DefaultResourceMethod: ImagemController.fotoDaAcomodacaoImagemController.fotoDaAcomodacao(Imagem)]
23:20:11,278 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ExceptionHandlerInterceptor
23:20:11,279 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor InstantiateInterceptor
23:20:11,323 DEBUG [LazyInterceptorHandler] Invoking interceptor ParametersInstantiatorInterceptor
23:20:11,323 DEBUG [ParanamerNameProvider] Found parameter names with paranamer for ImagemController.fotoDaAcomodacao(Imagem) as [imagem]
23:20:11,324 DEBUG [OgnlParametersProvider] Applying id with [71]
23:20:11,333 DEBUG [ParametersInstantiatorInterceptor] Parameter values for [DefaultResourceMethod: ImagemController.fotoDaAcomodacaoImagemController.fotoDaAcomodacao(Imagem)] are [br.com.reservason.models.Imagem@397a82f]
23:20:11,335 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor FlashInterceptor
23:20:11,339 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ControleAcessoInterceptor
23:20:11,341 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ExecuteMethodInterceptor
23:20:11,341 DEBUG [ExecuteMethodInterceptor] Invoking ImagemController.fotoDaAcomodacao(Imagem)
Hibernate: select imagem0_.id as id8_2_, imagem0_.acomodacao_id as acomodacao5_8_2_, imagem0_.empresa_id as empresa2_8_2_, imagem0_.extensao_foto as extensao3_8_2_, imagem0_.foto as foto8_2_, acomodacao1_.id as id5_0_, acomodacao1_.empresa_id as empresa2_5_0_, acomodacao1_.capacidade_maxima as capacidade3_5_0_, acomodacao1_.capacidade_ocupacao as capacidade4_5_0_, acomodacao1_.nro_de_quartos as nro5_5_0_, acomodacao1_.numero as numero5_0_, acomodacao1_.observacao as observacao5_0_, acomodacao1_.status as status5_0_, acomodacao1_.tipo_acomodacao_id as tipo9_5_0_, tipoacomod2_.id as id9_1_, tipoacomod2_.empresa_id as empresa2_9_1_, tipoacomod2_.observacoes as observac3_9_1_, tipoacomod2_.tipo as tipo9_1_ from imagem imagem0_ left outer join acomodacao acomodacao1_ on imagem0_.acomodacao_id=acomodacao1_.id left outer join tipo_acomodacao tipoacomod2_ on acomodacao1_.tipo_acomodacao_id=tipoacomod2_.id where imagem0_.id=?
Lucas_Cavalcanti

se a lógica recebe uma img, vc tem que passar uma img, não um id:

${linkTo[ImagemController].fotoDaAcomodacao[img]}
D

#olocomeu, ai sim em.

Funciona.

Obrigado.

Criado 28 de setembro de 2011
Ultima resposta 28 de set. de 2011
Respostas 6
Participantes 3