Garcia-jj, eu também tinha pensado na solução de colocar no path, a uri gerada pelo browser e funcionou bem, exemplo:
@Path("/relat[color=red]ó[/color]rio") por @Path("/relat[color=red]%C3%B3[/color]rio")
Mas eu tive um outro problema que sua sugestão deu a dica para a solução, vamos ao problema:
Eu tenho uma classe Usuario que tem como chave primária(id) uma string chamada login. No meu UsuariosController existe
um método que irá popular o formulário para a edição do usuário como a seguir:
<a class="mention" href="/u/path">@Path</a>("/usuarios/edita/{login}")
public Usuario edita(String login) {
// carrega o usuário pelo login
return dao.carrega(login);
}
O grande problema é quando existir um login com acentuação. O dao não conseguirá carregar o usuário porque o login
estará codificado para o padrão da URI.
Exemplo: andré será andr%C3%A9
Solução: Usar a classe URLDecoder
@Path("/usuarios/edita/{login}")
public Usuario edita(String login) {
// Resolve problema de acentuação
String loginTraduzido = login;
try {
loginTraduzido = URLDecoder.decode(login, “UTF-8”);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// carrega o usuário pelo login
return dao.carrega(loginTraduzido);
}
Gostaria de agradecer as ajudas oferecidas e deixo a solução acima para quem usar
alguma classe que tenha como id ou chave primária uma string