Boa Tarde, e o seguinte nao sei se isto e BUG ou e a forma convencao do VRaptor 3.
@Resource
public class CadUfController {
private final Result result;
private final BeanCadUf beanCadUf;
private Validator validator;
private CadUf cadUf = new CadUf();
private List<CadUf> lista = new ArrayList<CadUf>();
public CadUfController(Result result, Validator validator, BeanCadUf beanCadUf) {
// TODO Auto-generated constructor stub
this.result = result;
this.beanCadUf = beanCadUf;
this.validator = validator;
}
//Editar
@Get
@Path("/caduf/{caduf.uf}")
public void editar(CadUf caduf) {
// TODO Auto-generated method stub
........
this.result.use(Results.logic()).forwardTo(getClass()).formulario();
}
//Localizar
@Get
@Path("/caduf/localizar")
public void localizar(ParametrosWeb parametrosweb) {
// TODO Auto-generated method stub
......
this.result.use(Results.logic()).forwardTo(getClass()).formulario();
}
}
Exception
2009-12-07 14:37:21.361:WARN::/jvds/caduf/localizar
java.lang.IllegalStateException: There are two rules that matches the uri '/caduf/localizar' with method GET: [[FixedMethodStrategy: uri /caduf/{caduf.uf} methods [GET]], [FixedMethodStrategy: uri /caduf/localizar methods [GET]]] with same priority. Consider using @Path priority attribute.
at br.com.caelum.vraptor.http.route.DefaultRouter.checkIfThereIsAnotherRoute(DefaultRouter.java:106)
at br.com.caelum.vraptor.http.route.DefaultRouter.parse(DefaultRouter.java:97)
at br.com.caelum.vraptor.http.DefaultResourceTranslator.translate(DefaultResourceTranslator.java:52)
at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:64)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:46)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59)
at br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:62)
at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91)
at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:55)
at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
Ja sei o porque deste erro no metodo localizar e so vc mudar o @Path("/caduf/localizar") para @Path(priority=2, value="/caduf/localizar") devido o metodo editar esta esperando o valor de {caduf.uf} = String entao ele esta entendo a URI /caduf/localizar como string tambem e esta dando conflito.
Pergunto ao pessoal ai o que voces acham sobre isso ?
Obrigado !!!
Joao Vitor