【问题标题】:Spring MVC(Spring 2.5) Question about Post-Redirect-GetSpring MVC(Spring 2.5) 关于Post-Redirect-Get的问题
【发布时间】:2010-07-16 15:07:27
【问题描述】:

我有一个 Spring Annonted Controller,用于从表单中捕获信息并从数据库中获取搜索结果列表。

这里是方法的定义

@RequestMapping(method = RequestMethod.POST, params = {SUBMIT_BTN }) 
public ModelAndView processForm(@ModelAttribute(COMMAND_NAME){


   // 1. Load search results using search parameters from form (Contained in a collection of some sort)


   // 2. Create the ModelAndView 

   // 3. Redirect with RequestView or redirect: to generate a GET. 
}

我认为我需要使用重定向进行重定向:因为我在会话的集合商店中有一个项目列表。无法将其添加为 url 请求参数。

基本上,我试图防止显示页面已过期的后退按钮出现问题。我想在字符串中实现 PRG 模式。

我很难将 POST 转换为 GET。我可以只重定向还是需要两种方法?感谢您的任何帮助,您可以提供。

【问题讨论】:

    标签: java spring spring-mvc


    【解决方案1】:

    标准模式是有一个控制器方法来处理 GET,它向用户显示表单(或其他),以及一个处理 POST,即表单提交。 POST 方法在完成处理提交后发送重定向,该重定向返回到 GET 方法。

    @RequestMapping(value="/myapp", method=GET) 
    public String showForm(@ModelAttribute(COMMAND_NAME){
       return "form.jsp";
    }
    
    @RequestMapping(value="/myapp", method=POST) 
    public String processForm(@ModelAttribute(COMMAND_NAME){
       // do stuff to process for submission
       return "redirect:/myapp";
    }
    

    返回带有“redirect:”前缀的视图名称会强制 Spring 发送 HTTP 直接而不是内部请求转发。

    这与 Spring 2.0 使用 SimpleFormController 实现的模式相同,但新方式更加透明。

    【讨论】:

      猜你喜欢
      • 2019-02-01
      • 2017-11-01
      • 2012-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多