java.lang.IllegalStateException: There are two rules that matches the uri " ..... " with same priority. Consider using @Path priority attribute.
br.com.caelum.vraptor.http.route.DefaultRouter.checkIfThereIsAnotherRoute(DefaultRouter.java:106)
br.com.caelum.vraptor.http.route.DefaultRouter.parse(DefaultRouter.java:97)
br.com.caelum.vraptor.http.DefaultResourceTranslator.translate(DefaultResourceTranslator.java:51)
br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:64)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
Ta bem, pelo que entendi estou “mapeando” dois metodos para um mesmo path. Mas como faço para resolver isso?
Exemplo:
:arrow: Tentando passar o Aluno para buscar tudo relacionado ao objeto aluno
Peguei as novas libs (vraptor-3.4.0.jar e as demais) do Blank Project .
Agora minha aplicação nao inicia mais …
Lucas_Cavalcanti
qual erro dá?
sonictk
29/02/2012 15:18:09 org.apache.catalina.core.StandardContext filterStart
SEVERE: Exception starting filter vraptor
java.lang.NoSuchMethodError: com.google.common.base.Objects.firstNonNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
at br.com.caelum.vraptor.scan.ScannotationComponentScanner.nullToEmpty(ScannotationComponentScanner.java:201)
at br.com.caelum.vraptor.scan.ScannotationComponentScanner.addWebInfClassesStereotypes(ScannotationComponentScanner.java:171)
at br.com.caelum.vraptor.scan.ScannotationComponentScanner.findStereotypes(ScannotationComponentScanner.java:143)
at br.com.caelum.vraptor.scan.ScannotationComponentScanner.scan(ScannotationComponentScanner.java:60)
at br.com.caelum.vraptor.scan.WebAppBootstrapFactory.create(WebAppBootstrapFactory.java:65)
at br.com.caelum.vraptor.ioc.spring.SpringProvider.start(SpringProvider.java:83)
at br.com.caelum.vraptor.VRaptor.init(VRaptor.java:110)
at br.com.caelum.vraptor.VRaptor.init(VRaptor.java:103)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:397)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3709)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4363)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
29/02/2012 15:18:09 org.apache.catalina.core.StandardContext start
SEVERE: Error filterStart
Engraçado, antes não tava usando a lib scannotation-1.0.2.jar
Lucas_Cavalcanti
sim, isso mudou…
troque o jar google-collect pelo guava ou atualize o guava pra última versão.
sonictk
Tirei o google-collect e a aplicação voltou a funcionar.
Porem aquele método ainda continua dando o erro HTTP Status 404 - The requested resource (/esporte/concessao/lista/) is not available.
Lucas_Cavalcanti
no log do servidor aparecem as rotas sendo criadas? acontece algum outro erro?
Lucas_Cavalcanti
na verdade o certo seria /esporte/concessao/lista/algumaOutraCoisa, certo?
vc não precisa passar algo depois desse /lista/ ???
sonictk
Sim, estou passando.
Olha no formulario que eu coloquei ali em cima como é que estou passando.
obs: Agora ta aplicado o priority=Path.HIGH e na assinatura coloquei @Path(THIS_PATH + "/lista/{[a-zA-Z]}")
public void listaConcessaoPorNomeAluno(String nome) { ... } e ta funcionando agora …
Lucas_Cavalcanti
isso: /{[a-zA-Z]}
não funciona no vraptor, vc tem que usar
/lista/{nome:[a-zA-Z]}
sonictk
Lucas Cavalcanti:
isso: /{[a-zA-Z]}
não funciona no vraptor, vc tem que usar
/lista/{nome:[a-zA-Z]}
Não deu certo assim …
Acho que to fazendo alguma coisa de muito errado, pq assim /{[a-zA-Z]} deu certo …
hehehe :roll:
Lucas_Cavalcanti
deu certo e vc conseguiu capturar esse parâmetro na url?
sonictk
utilizando meu método no controller
@Path(THIS_PATH + "/lista/{[0-9A-Za-z]}")
public void listaConcessaoPorNomeAluno(String nome) { ... }
a variavel nome vem direitinho. Consigo usa-la normalemnte.
Lucas_Cavalcanti
mas qual url vc está chamando?
sonictk
No caso to usando um formulario para busca, o action dele fica assim:
:arrow: Outra coisa, tem como passar um Objeto para a URL sem ser por POST ? lista/${aluno}"/ não consegui fazer isso …
Lucas_Cavalcanti
mas vc colocou algum input com o name=“nome”?
passar o objeto na url até dá (usando um toString e criando um Converter), mas não sei se é a melhor forma…
o aluno vai ter um monte de campos, o melhor é fazer via dados de formulário mesmo.
sonictk
Isso, nesse formulario tenho o input
Lucas_Cavalcanti
se tá no formulário, vc não precisa colocar na url né tá funcionando por causa desse input, e não por causa do que vc colocou na url.
tire o {[0-9A-Za-z]} da url e tire o ${nome} da action do formulário e faça ao invés disso:
<inputname="nome"type="text"value="${nome}">
dica: ao invés de colocar o THIS_PATH em todos os @Path, coloque isso no @Path em cima da classe