RequestMethod POST和GET在同一个Controller中?

时间:2013-05-17 06:36:20

标签: java spring model-view-controller request

首先,这是我的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 - 语句进行检查 如果没有,那么它应该只显示我的表格。然后,当我填写表单时,它会使用POST发送它,现在有一些参数,它会通过if - 语句。

我的问题是:当我第一次访问该网站时,它不是POST - 请求,因此我收到错误消息Request method 'GET' not supported
但是将表单更改为GET - 请求不适合我。它必须是POST

那么在POSTGET请求中是否有处理相同控制器的解决方案?

3 个答案:

答案 0 :(得分:23)

将它映射到的方法值数组,如下所示:

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

答案 1 :(得分:2)

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

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

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

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

答案 2 :(得分:0)

在Spring中,开发人员可以在同一个控制器上使用RequestMethod.POST和RequestMethod.GET,只需创建一个类似的方法数组:

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