如何在GET和POST请求之间共享Spring控制器方法之间的信息?

时间:2016-11-18 15:55:38

标签: java spring post controller get

我是Spring的新手,我想:

1)当用户访问 localhost / admin / users 时,我希望应用预定义选项

2)在 localhost / admin / users 上我有一些按钮执行带有四个参数的POST,因为我的老板不想让我使用get(我认为最好也使用POST

3)我有一个管理adminUsersPost请求的控制器方法POST,我希望该方法能够使用adminUsersGet方法重新加载我的浏览器,但是POST请求中发送的信息。

我现在在浏览器中收到的是一个网页内容采用奇怪编码的警报,我希望它是正确的,但我不知道。

@RequestMapping(value = "/admin/users", method = RequestMethod.GET)
public ModelAndView adminUsersGet(
    Integer page,
    Integer items,
    String sorting,
    String sortingDirection)
{
  // predefined options
  Integer pagina = 1;
  Integer itemsPorPagina = 10;
  String ordenacion = "idUsuario";
  String dirOrdenacion = "asc";
  // end of predefined options

  // Code that I want for it to use POST params from the other method


  ModelAndView mv = new ModelAndView("adminUsers");
  return mv;
}

@RequestMapping(value = "/admin/users", method = RequestMethod.POST)
public ModelAndView adminUsersPost(
    @RequestParam(value = "pagina") Integer pagina,
    @RequestParam(value = "itemsPorPagina") Integer itemsPorPagina,
    @RequestParam(value = "ordenacion") String ordenacion,
    @RequestParam(value = "dirOrdenacion") String dirOrdenacion)
{
  // Here I try to pass the POST parameters to the GET method for reloading
  // the webpage with the new content
  return adminUsersGet(pagina, itemsPorPagina, ordenacion, dirOrdenacion);
}

1 个答案:

答案 0 :(得分:1)

模式POST参数 - > GET相同的参数是常见的参数。你需要的是RedirectAttributes,它将你的参数存储到会话中并重定向到你的GET方法。一旦GET被命中,spring将自动从会话中删除所有属性,因此在GET方法的浏览器URL中不会显示任何POST参数。请查看here以获取完整示例,并根据您的需要进行调整。