Alguem já passou pelo problema de usar "pontos" na URL ?
03/05/2017 13:58
0
Acabei de passar por um probleminha novo! 

Estava tentando passar um email numa url e o Spring estava removendo o ".br".

@GetMapping(path = "/pessoafisica/email/{email}")
public ResponseEntity<PessoaFisica> getPessoaFisicaPorEmail(@PathVariable String email){...}


Quando enviava a requisição '/api/clientes/pessoafisica/email/9035@teste.com.br' chegava no meu Controller o email '9035@teste.com'.

Pesquisando eu vi que isso é um comportamento gerado pelo DefaultAnnotationHandlerMapping. Nas minhas pesquisas existem duas sugestões:

1 - Alterar useDefaultSuffixPattern para false
2 - Ou usar Expressão regular no path: @GetMapping(path = "/pessoafisica/email/{email:.+}")

Vcs já passaram por isso. Sugerem alguma coisa diferente?
Tags: spring


1
Fala Pablo blz? Cara explica melhor o contexto pra gente entender o porque vc está passando o email, não é legal usar e-mail como pathVariable já que elas são usadas para acessar recursos por ID. Seria melhor passar o email como queryparam.
04/05/2017 15:43


0
Oi Pablo,
li esta sua mensagem alguns dias atrás e confesso que fiquei um pouco encucado com ela. Entretanto, lendo aqui novamente, vejo que você já matou a charada. É o sufixo que está te matando.
O view resolver está buscando por uma visualização que não existe, o que gera este erro.


0
Fala @felipe Beleza? Na verdade é uma situação hipotética! Não é a "vida real".  :)
Eu estava tentando fazer coisas com Expressão Regular como eu fazia usando o Jersey e me deparei com essa situação em que o Spring remove o sufixo.
@GET@Path("{id : \d+}") //só aceitar números no matching do url
@GET@Path("/username/{username : [a-zA-Z][a-zA-Z_0-9]}") 
Confesso que não tinha pensado em Query Parameters. Vou dar uma olhada pois não conhecia. Como ficaria?

@henrique
Pois é. Na minha visão
05/05/2017 19:13


1
Opa, você pode tentar com essa configuração adicional. O método setUseSuffixPatternMatch(false) vai te permitir trabalhar com o pontos na url, por padrão ele é true.
@Configuration
public class WebConfig extends WebMvcConfigurationSupport {
 @Bean
 public RequestMappingHandlerMapping requestMappingHandlerMapping() {
    RequestMappingHandlerMapping handlerMapping = super.requestMappingHandlerMapping();
    handlerMapping.setOrder(2);
    handlerMapping.setUseSuffixPatternMatch(false);
    return handlerMapping;
 }
}
Documentacao
http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/mvc/method/annotation/RequestMappingHandlerMapping.html
13/05/2017 22:21



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails, Spring e mais com a Formação itexto!

Livro de Spring


/dev/All

Os melhores blogs de TI
em um único lugar!

 
Spring Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.