在spring mvc 3中使用path变量

时间:2013-12-26 14:20:15

标签: java spring-mvc

我正在从Spring in Action 3rd Edition学习Spring MVC,并且遇到了路径变量的使用。根据书中给出的例子,我不清楚它是如何工作的,请帮助我理解这里的概念:

@RequestMapping(method=RequestMethod.POST)
public String addSpitterFromForm(@Valid Spitter spitter, BindingResult bindingResult) {
   if(bindingResult.hasErrors()){
       return"spitters/edit";
   }
   spitterService.saveSpitter(spitter);
   return "redirect:/spitters/" + spitter.getUsername();
}
  

至于它重定向到的路径,它将采用/spitters/{username}的形式,其中{username}表示刚刚提交的Spitter的用户名。例如,如果用户以habuma名称注册,那么在表单提交后,他们将被重定向到/spitters/habuma

在上述声明中,它表示请求被重定向到/spitters/habuma,其中habuma是用户名。

@RequestMapping(value="/{username}",method=RequestMethod.GET)
public String showSpitterProfile(@PathVariable String username, Model model){
    model.addAttribute(spitterService.getSpitter(username));
    return "spitters/view";
}
  

例如,如果请求路径为/username/habuma,则habuma将传递给showSpitterProfile()用户名。

这里它说s howSpitterProfile()方法处理/username/habuma的请求,这与前面提到的语句相矛盾。

看起来第一个语句本身是正确的,但请告诉我方法showSpitterProfile是否处理两个网址,即/splitters/habuma/username/habuma/spitters/username/habuma

1 个答案:

答案 0 :(得分:1)

如果类级/username(您的问题中未显示)仅为@RequestMapping,则没有@RequestMapping("/spitter")路径组件。书中可能有一个拼写错误。正确的判决是:

  

例如,如果请求路径为 / spitter / habuma ,则habuma将传入showSpitterProfile()以获取用户名。