【问题标题】:RequestMethod POST and GET in the same Controller?RequestMethod POST 和 GET 在同一个控制器中?
【发布时间】:2013-05-12 06:15:46
【问题描述】:

首先,这是我的Controller

@RequestMapping(value = "/esta", method = RequestMethod.POST)
public String handleRequest(HttpServletRequest request) {

    Esta estaobject = new Esta();
    // To test, if the parameters are set
    String user = request.getParameter("user");
    String name = request.getParameter("name");
    String shortname = request.getParameter("shortname");
    String was_admin_string = request.getParameter("was_admin");
    String sap_nr = request.getParameter("sap_nr");
    String etl_string = request.getParameter("etl");

    if (user != null && name != null && shortname != null && was_admin_string != null && sap_nr != null && etl_string != null) {
        some code...
    }

    request.getSession().setAttribute("esta", estaobject);

    return "esta";
}

当我访问该站点时,它会检查if-statement,是否有一些参数。
如果没有,那么它应该只显示我的表单。然后,当我填写表格时,它用POST 发送它,现在有一些参数,它通过if-statement。

我的问题是:当我第一次访问该站点时,它不是POST-request,所以我收到了错误消息Request method 'GET' not supported
但是将表单更改为GET-request 对我来说不是一个选项。它必须是POST

那么有没有办法在POSTGET请求中处理同一个控制器?

【问题讨论】:

    标签: java spring model-view-controller request


    【解决方案1】:

    在 spring 中,开发人员可以在同一个控制器上同时使用 RequestMethod.POST 和 RequestMethod.GET ,只需制作一个这样的方法数组:

    @RequestMapping(value = "/esta", method = {RequestMethod.POST, RequestMethod.GET})
    public String handleRequest(HttpServletRequest request) {
    //Implementation of your code.
    } 
    

    【讨论】:

      【解决方案2】:

      或者你可以编写单独的方法

      @RequestMapping(value = {#some_vale}, method = RequestMethod.GET)
      public random_method #1{
      }
      
      @RequestMapping(value = { #some_value }, method = RequestMethod.POST)
      public random_method #2{
      }
      

      现在您可以实现您访问特定页面和另一个填写表单。 希望这会对你有所帮助。

      【讨论】:

        【解决方案3】:

        使其成为映射到的方法值数组,如下所示:

        @RequestMapping(value = "/esta", method = {RequestMethod.POST, RequestMethod.GET})
        

        【讨论】:

        • 噢噢噢男孩。太尴尬了……我忘了“干净安装”我的课。现在它起作用了。我很抱歉 ^^ +1 正确答案:P
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-11-11
        • 1970-01-01
        • 2020-05-12
        • 2016-04-21
        • 2015-05-14
        • 2022-01-13
        • 1970-01-01
        相关资源
        最近更新 更多