我将使用 StackOverflow 的用户配置文件页面作为示例。假设我们有这个 URL:
https://stackoverflow.com/users/2036414/userlogin
如果我们像这样更改(在浏览器的 url 栏中编辑)最后一个路径变量:
https://stackoverflow.com/users/2036414/aWordThatIsNotTheLoginOfThisUser
...然后按 Enter,返回的 URL 将是第一个,这意味着这个变量被设置为正确的登录,基于另一个变量,它可能是用户的 ID (2036414)。换句话说,URL 被更正为:
https://stackoverflow.com/users/2036414/userlogin
我的问题是:如何使用 Spring MVC 做到这一点?这是我的 Controller :
@RequestMapping(value="/{id}/{login}", method = RequestMethod.GET)
public String showPerfilUsuario(@PathVariable("id") long id, @PathVariable("login") String login, Map<String, Object> model){
Usuario usuario = usuarioService.buscarUsuarioPorId(id);
model.put("usuario", usuario);
return "usuario"; //that's the tiles definition's name
}
任何帮助将不胜感激,谢谢。
最佳答案
Stackoverflow 可能会做一些花哨的事情 URL rewriting .一种简单的方法是发送重定向。让您的处理程序方法获取用户 ID 并检查它是否与用户名字符串匹配。 如果没有,则发送重定向
return "redirect:/users/" + id + "/" + correctUserName;
这将向浏览器发送 302 响应。浏览器将向构造的地址发送新的 HTTP 请求。
关于java - Spring MVC - 使用路径变量编辑响应 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19504019/