@RequestMapping(value = "/Foo/{id}/{friendlyUrl:.*}", method = RequestMethod.GET)
public ModelAndView getFoo(@PathVariable final Long id, @PathVariable final String friendlyUrl) {
所以它匹配ID,和任何字符串。 但我希望用户看到一个字符串,我指定。
foo = fooService.get(id); //use id from pathvariable
redirectView = new RedirectView(foo.getCorrectUrl()); //set url to correct url, not that in path
redirectView.setStatusCode(HttpStatus.MOVED_PERMANENTLY); //moved permanently
modelAndView = new ModelAndView(redirectView);
modelAndView.setViewName("myFoo.jsp");
return modelAndView;
一切工作正常,除了URL,用户看到的是不正确。
这是(应该是)相同的功能,当一个问题被标题上的计算器网站存在的问题改变。
编辑,现在做下面的,几乎工程
return new ModelAndView("redirect:/Foo/"+id+"/"+foo.getUrl());
但是,它返回一个临时移动状态代码,我想永久301。
是他们的一种方式来获得既是重写后的URL,并使用弹簧MVC控制器永久移动状态代码?