Pessoal
Tenho um controller no Spring em que uma das actions recebe uma string como parametro via url
public ModelAndView update(@PathVariable String username)
porém quando o usuário digita a string com . somente o que foi digitado antes do ponto é recebido no controller do Spring.
exemplo: localhost:8080/sistema/usuario/update/joao.silva - chega no controller = joao
se eu digitar joaosilva o parametro é passado normalmente para o controller.
Alguém sabe alguma maneira de permitir o . ??
jaboot
Março 26, 2012, 7:21am
#2
Cara, dá sim, pelo que eu pesquisei tu pode usar regular expressions pra resolver o teu problema.
Dá uma olhada aqui: http://static.springsource.org/spring/docs/current/spring-framework-reference/html/mvc.html
Nessa parte: 16.3.2.3 URI Template Patterns with Regular Expressions
jaboot
Março 26, 2012, 8:52am
#3
Simples assim funciona: (Spring 3.1)[code] @RequestMapping (value = “/ponto/{nome:.*}”, method = GET)
public String testePonto(@PathVariable String nome, ModelMap map, Model model) {
System.out.println("nome: " + nome);
return seuRetorno;
}
[/code] Existe uma discussão no StackOverflow sobre declarar o seu próprio bean DefaultAnnotationHandlerMapping (Spring < 3.1) ou o RequestMappingHandlerMapping (Spring 3.1), e setar a propriedade de controle de extensões (sim, o .jsp, .html…) pra false.
Eu não consegui, boa sorte
Vlw cara !
Vou dar uma olhada e tentar escrever baseado nessa sua recomendação.
Batata !
@RequestMapping(value = "/profile/{username:.*}", method = RequestMethod.GET)
public ModelAndView profile(@PathVariable String username) {
Works fine !
Obrigado