从弹簧控制器中的get方法重定向到post方法

时间:2014-01-20 13:07:33

标签: spring

点击链接控件后,我有一个链接retailerId将转到下面的控制器:

@Controller
@RequestMapping(value = "/auth/adminsearchowner")
public class AdminSearchOwnerController {

 @RequestMapping(value = "/retailerId/{retailerId}",method = RequestMethod.GET)
public ModelAndView viewRetailerInfo(
        @PathVariable("retailerId") String retailerId,
        @ModelAttribute EditRetailerLifeCycleBean editLicenseBean) {
    editLicenseBean.setSelectedIDsString(retailerId);
    ModelAndView modelAndView = new ModelAndView();
    modelAndView.addObject("editLicenseBean",editLicenseBean);
    modelAndView.setViewName("redirect:/auth/adminlicense/viewlicense");
    return modelAndView;
  } 
}

其中/ auth / adminlicense / viewlicense位于另一个控制器中,我们同时拥有此/ auth / adminlicense / viewlicense请求映射的GET和POST方法。我想从早期的控制器调用post方法。

@Controller
@RequestMapping("/auth/adminlicense")
public class AdminViewLicenseController {

@RequestMapping(value = "/viewlicense", method = RequestMethod.GET)
public ModelAndView searchRetailerLicense(
        @ModelAttribute("editLicenseBean") EditRetailerLifeCycleBean editLicenseBean,
        HttpSession session) {
  }

@RequestMapping(value = "/viewlicense", method = RequestMethod.POST)
public ModelAndView getLicenseDetails(
        @ModelAttribute EditRetailerLifeCycleBean lifeCycleBean,
        HttpSession session) {
  }
 }

但它将采用GET方法。你能告诉我解决方案吗?

2 个答案:

答案 0 :(得分:2)

没有解决方案。重定向不能导致浏览器发送POST。

重新考虑你的设计。

答案 1 :(得分:0)

<击> 尝试:

<击>
modelAndView.setViewName("forward:/auth/adminlicense/viewlicense");

而不是

modelAndView.setViewName("redirect:/auth/adminlicense/viewlicense");

<击>

无论如何,您试图通过用户的浏览器(客户端)将一些数据从一个控制器(服务器端)发送到另一个(服务器端)的设计可能不是最佳选择。

希望它有所帮助!