ou seja os form em html vai ter na sua action="/cadpessoa" method=“GET” entao tem que ir para o evento formulario caso seja um POST para adiciona mas isso sabendo que e padrao para qualquer Controller que tem em minha aplicacao.
Entao lucas e que estou trabalhando com controller Generic nao queria sair anotando metodo de cada classe ate dei dando uma olhada no codigo fonte do vraptor mais ainda nao achei uma solucao se puder implementar isso seria legal a classe que estava olhando onde que faz toda esta parafernalhia e a RouteBuilder.java ?
O que achei meio estranho a variavel "originaUri serve tando para Origem e Destino e isso mesmo e de uma olhada neste codigo que imprimi no console que vraptor monta as URI por isso cheguei a conclusao desta variavel.
bom, vc não vai implementar isso com o RoutesConfiguration, pq não vai funcionar…
o que vc quer fazer? como vc vai decidir os caminhos dos métodos dos GenericController (na classe filha)?
J
jvds
Lucas Cavalcanti:
bom, vc não vai implementar isso com o RoutesConfiguration, pq não vai funcionar…
o que vc quer fazer? como vc vai decidir os caminhos dos métodos dos GenericController (na classe filha)?
quero fazer o seguinte tudo que for classeX Tipo
classeX HttpMethod.GET => formulario
classeX HttpMethod.POST => adiciona
ou seja na hora do vraptor montar os routes fazer isso
lembrando que for HttpMethod.GET = montar para formulario HttpMethod.POST = adiciona seria parecido com ruby on rails se nao me engano.
vc anotou os métodos adiciona e formulario do GenericController com @Post e @Get?
J
jvds
sim e do DepartamentoController nao.
Lucas_Cavalcanti
mas vc sobrescreveu esses métodos no DepartamentoController?
J
jvds
nao depois sim so para ver e da a mesma exception
Lucas_Cavalcanti
habilita o log de debug e posta aqui o que aparece assim que vc inicia o servidor, plz
testei aqui rapidamente, e colocar os @Get e @Post na classe mãe funcionou pra filha tb…
J
jvds
Lucas Cavalcanti:
habilita o log de debug e posta aqui o que aparece assim que vc inicia o servidor, plz
testei aqui rapidamente, e colocar os @Get e @Post na classe mãe funcionou pra filha tb…
Achei o problema aqui na minha aplicacao e o seguinte o que estava acontecendo era isto como estou usando GenericController se eu nao fizer @Override no metodo adciona do controller meu por exemplo do CadDepartamentoController ele sobe com CadDeparamentoController.adiciona(Object) entao faco o @Override ai ele sobe com CadDeparamentoController.adiciona(CadDepartamento) so que nao estava colocando a anotacao @Post so estava la no GenericController @Post no metodo adiciona entao esta subindo assim
Devido ao [ALL] -> CadDepartamentoController.adiciona(CadDepartamento) ele estava dando aquele exception sempre tentava ir para aquele metodo
entao sobrescrevi os seguinte metodos da classe PathAnnotationRoutesParser e resolveu se tiver outra forma de resolver sem ter que sair anotando classe por classe posta ai valeu
@OverrideprotectedStringdefaultUriFor(StringcontrollerName,StringmethodName){// TODO Auto-generated method stubif((methodName.equals("adiciona"))||(methodName.equals("deletar"))||(methodName.equals("formulario"))){returncontrollerName.toLowerCase();}else{returnsuper.defaultUriFor(controllerName,methodName).toLowerCase();}}@OverrideprotectedList<Route>registerRulesFor(Class<?>baseType){// TODO Auto-generated method stubList<Route>routes=newArrayList<Route>();for(MethodjavaMethod:baseType.getMethods()){if(isEligible(javaMethod)){String[]uris=getURIsFor(javaMethod,baseType);for(Stringuri:uris){RouteBuilderrule=newRouteBuilder(this.proxifier,this.finder,uri);for(HttpMethodm:HttpMethod.values()){if(javaMethod.isAnnotationPresent(m.getAnnotation())){rule.with(m);}}if(javaMethod.isAnnotationPresent(Path.class)){rule.withPriority(javaMethod.getAnnotation(Path.class).priority());}if(javaMethod.getName().toLowerCase().equals("adiciona")){rule.with(HttpMethod.POST);}if(javaMethod.getName().toLowerCase().equals("deletar")){rule.with(HttpMethod.DELETE);}rule.is(baseType,javaMethod);rule.build();routes.add(rule.build());}}}returnroutes;}