Java 重定向到同一控制器中的POST方法
我有一个SpringRestController,希望重定向到与RequestBody位于同一控制器中的POST方法。 任何解决方案都欢迎,而不仅仅是重定向 MyController:Java 重定向到同一控制器中的POST方法,java,rest,spring-mvc,redirect,Java,Rest,Spring Mvc,Redirect,我有一个SpringRestController,希望重定向到与RequestBody位于同一控制器中的POST方法。 任何解决方案都欢迎,而不仅仅是重定向 MyController: @RequestMapping(value = "/addCompany", method = RequestMethod.POST) public String addCompany(@Valid Company company, BindingResult result, HttpServle
@RequestMapping(value = "/addCompany", method = RequestMethod.POST)
public String addCompany(@Valid Company company, BindingResult result,
HttpServletRequest request, Model model) throws Exception {
//some logic
//need to pass Company Object as RequestBody
return "redirect:/app/postmethod/";
}
//Method to redirected
@RequestMapping(value = "/postmethod", method = {RequestMethod.POST, RequestMethod.GET})
public String getData( @RequestBody(required=false) Company compnay, HttpServletRequest request, Model model) throws Exception {
//some logic
//required company object
return "htmlpage";
}
我需要将我的请求从同一控制器中的addCompany
方法重定向到/postmethod
,我愿意使用任何可行的解决方案。检查这里:
根据HTTP 1.1协议参考,状态代码301(已移动
永久)和302(已找到)允许更改请求方法
从邮寄到领取。本规范还定义了相应的307
(临时重定向)和308(永久重定向)状态代码
不允许将请求方法从POST更改为GET
请求主体将被传递。下面是使用您的代码的示例:
@RestController
@RequestMapping("app")
public class TestController {
@PostMapping("/addCompany")
public ModelAndView addCompany(@RequestBody Company company, HttpServletRequest request) {
System.out.println("First method: " + company.name);
request.setAttribute(
View.RESPONSE_STATUS_ATTRIBUTE, HttpStatus.TEMPORARY_REDIRECT);
return new ModelAndView("redirect:/app/postmethod/");
}
@PostMapping("/postmethod")
public void getData(@RequestBody Company company) {
System.out.println("Redirected: " + company.name);
}
public static class Company {
String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}
使用POST请求进行http://localhost:8080/app/addCompany
带有body{“name”:“Test Company”}
,在接下来接收的输出中:
First method: Test Company
Redirected: Test Company
我在这一页上找到了一个很好的解释 用于防止用户无意中(重新)提交他们不希望的POST事务,或将POST提交到他们不希望的上下文中
因此,如果您想这样做,可以在会话中设置数据,并使用get方法调用post方法。spring非常棒,但是如何传递数据?正确吗石荒人, 如何传递数据?这只是一个简单的电话,我已经doing@HiteshKumar是否要传递其他自定义数据?因为请求中的所有数据都已被传递是,我将如何传递Company对象?我正在用session进行测试。@HiteshKumar两种方法都有吗?你能分享你使用的代码吗?为什么你不能直接调用getData?Turo,你能在这里提供更多关于它的细节,如何使用它。谢谢,我会尝试的
First method: Test Company
Redirected: Test Company