我试图让我的控制器将POST请求转发给另一个带有一些参数的控制器:
@Controller
@RequestMapping("/register")
public class RegisterController {
//...
@RequestMapping(method=RequestMethod.POST)
public String processSubmit(@Valid Voter voter, BindingResult result, HttpServletRequest request) {
//...
request.setAttribute("firstName", voter.getFirstName());
request.setAttribute("lastName", voter.getLastName());
request.setAttribute("ssn", voter.getSsn());
logger.info("VoterID exists, returning redirect:/question/prepare");
return "forward:/question/get";
}
}
@Controller
@RequestMapping("/question")
public class QuestionController {
//...
@RequestMapping(value="/get", method=RequestMethod.GET)
public String prepareVoterBean(@RequestParam String firstName,
@RequestParam String lastName, @RequestParam String ssn, Model model) {
logger.info("QuestionController got GET REQUEST for " + firstName + lastName + ssn);
VoterBean bean = new VoterBean();
bean.setFirstName(firstName);
bean.setLastName(lastName);
bean.setSsn(ssn);
model.addAttribute("questions",bean);
return "questionPage";
}
}
我正在尝试编写QuestionController来创建一个新模型,其中包含我从processSubmit()收到的参数。问题是当我返回:/ question / get from processSubmit时,请求作为HTTP POST请求转发,服务器返回HTTP状态405 - “请求方法'POST'不受支持。为了构建新模型在QuestionController中,我想我需要从processSubmit()转发HTTP GET请求。
我对Spring Web MVC框架文档进行了一些研究,并且读取重定向前缀可用于将请求转发为来自POST方法的GET请求,但是当我尝试重定向前缀(即return redirect:/question/get
)时,服务器返回HTTP 400 - 客户端发送的请求在语法上是不正确的。我做错了什么?
提前致谢。
答案 0 :(得分:0)
请不要这样做。
将辅助方法中的两个控制器方法之间的公共部分分解出来,并从两个控制器方法中调用此辅助方法。
答案 1 :(得分:0)
原因是the uri of /question/get requires params(firstName, lastName, ssn)
,
但是当重定向到它时,你什么都不给它。
也许可以帮助你:))