我理解之前已经问过这个问题,我正在学习 Spring 跟随 Spring Petclinic示例项目。 processCreationForm 没有问题,当使用 GET 对 showOwner 进行重定向时,它按预期工作,但是当我使用<实验它时strong> POST 它会抛出 HTTP状态405 - 请求方法'GET'不受支持。是因为 processCreationForm 正在重定向到 showOwner 我无法将其作为POST请求获取?
@RequestMapping(value = "/owners/new", method = RequestMethod.POST)
public String processCreationForm(@Valid Owner owner,
BindingResult result) {
if(result.hasErrors()) {
return "owners/ownerForm";
} else {
this.clinicService.saveOwner(owner);
return "redirect:/owners/" + owner.getId();
}
}
@RequestMapping(value = "/owners/{ownerId}", method = RequestMethod.POST)
public ModelAndView showOwner(@PathVariable("ownerId") int ownerId) {
ModelAndView mav = new ModelAndView("owners/ownerDetails");
mav.addObject(this.clinicService.findOwnerById(ownerId));
return mav;
}
赞赏任何有用的评论。
答案 0 :(得分:1)
您正在重定向到/owners/{ownerId}
网址,但您没有为该端点定义GET
处理程序,因此Spring MVC抱怨:
HTTP状态405 - 不支持请求方法“GET”。
使用RequestMethod.GET
可以解决您的问题:
@RequestMapping(value = "/owners/{ownerId}", method = RequestMethod.GET)
public ModelAndView showOwner(@PathVariable("ownerId") int ownerId) { ... }
是因为processCreationForm正在重定向到showOwner I 我无法将其作为POST请求获取?
由于POST
上的/owners/new
处理程序正在重定向到/owners/{ownerId}
,因此并不意味着重定向将是POST
请求。重定向始终是GET
次请求。