PathVariable no Spring

4 respostas
M

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 . ??

4 Respostas

J

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

J
Simples assim funciona: (Spring 3.1)
@RequestMapping(value = "/ponto/{nome:.*}", method = GET)
	public String testePonto(@PathVariable String nome, ModelMap map, Model model) {
		
		System.out.println("nome: " + nome);
		
		return seuRetorno;
		
	}
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

M

Vlw cara !

Vou dar uma olhada e tentar escrever baseado nessa sua recomendação.

M

Batata !

@RequestMapping(value = "/profile/{username:.*}", method = RequestMethod.GET)	
    		public ModelAndView profile(@PathVariable String username)  {

Works fine !

Obrigado :wink:

Criado 26 de março de 2012
Ultima resposta 26 de mar. de 2012
Respostas 4
Participantes 2