A pouco adicionei um método em um controller que recebe um Character, e esse parametro vem da URI. Porém sempre que tento acessar a página recebo um page-not-found. Quando altero o parametro como String a página é processada normalmente.
Fiz um debug e o converter de Character nunca é chamado.
INFO: /customer/ [GET] -> CustomerController.list(Character, Paging)
INFO: /customer/page-{paging}/ [GET] -> CustomerController.list(Character, Paging)
INFO: /customer/{letter}/page-{paging}/ [GET] -> CustomerController.list(Character, Paging)
FINE: Invoking interceptor ResourceLookupInterceptor
FINE: trying to access /customer/A/page-1/
FINE: VRaptor ended the request
estranho… já tentou com char ao invés de Character? é ruim usar String?
pra garantir que é uma letra só vc pode fazer:
@Path("/customer/{letter:[A-Z]}/page-{paging}/")
vc pode passar qqer regex depois dos ‘:’ 
de qqer forma, vou investigar pq não funciona
Problema em usar String não é, mas como esse campo é um char quero já recebe-lo como char. Temporariamente estou recebendo via vraptor como String porém chamo um letter.charAt(0) antes de chamar o EJB, então tá tranquilo.
Lucas, vou fazer mais uns testes como você falou usando char e verifico se ele está registrando o converter. E te aviso.
Abraços
Fiz uns testes aqui e mesmo trocando o ognl pelo iogi está dando erro. Por um instante achei ser o tradutor de parametros.
Porém notei que quando uso por exemplo /customer/5 funciona, porém /customer/x não funciona. Ele nem mesmo chama o converter, e o erro retornado é um http-404.
Se eu usar /customer/{letter:[A-Z]}/ ele entra no método porém com o letter = null.
ele deve estar tratando char como número (afinal, ele é um número) por isso tá acontecendo esse tipo de coisa =(
Pois foi o que eu notei. Porém se eu passar 5 como parametro ele me imprime 5 na tela. Se ele fosse trabalhar com char sendo int deveria imprimir um caractere “fora do espectro”. O mais estranho ainda é que ele não chama nenhum converter. Coloquei um breakpoint em todos os converters mas nenhum é chamado.
Outra coisa que eu notei é que com regex ele até acha o método, porém todo e qualquer parametro é passado como null mesmo que eu passe o parametro.
Perfeito, está funcionando mesmo. Valeu Lucas :thumbup:
KKKKKKKKKKK
2 horas da minha vida perdidas…
Devia ter vindo aqui no fórum antes.
Valeu
Problemas novamente…
o que estou fazendo de errado?
@Path("/apelido/{apelido:[A-Z]}")
public void atalho(String apelido) {
System.out.println("APELIDO: " + apelido);
}
ai eu chamo /apelido/A e recebo APELIDO: null
Qual versão do vraptor que você está usando? Ou está usando qual snapshot?
vraptor2-2.6.2.jar
vraptor-3.1.3-20100510.222134-3.jar