在同一个控制器中使用RequestMethod POST和GET请求方法?

11

首先,以下是我的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个回答

23

将其转换为方法值的数组,如下所示:

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

1
哦,天啊。这太尴尬了...我忘记了对我的类进行“干净安装”。现在它好了。对不起 ^^ 给你一个加一的赞(+1)作为正确答案 :P - Michael Schmidt

2

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

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

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

现在,您可以实现访问特定页面和填写表单的功能。希望这能帮到您。

0
在Spring开发中,开发人员可以同时使用RequestMethod.POST和RequestMethod.GET,只需在控制器中创建一个方法数组即可:
@RequestMapping(value = "/esta", method = {RequestMethod.POST, RequestMethod.GET})
public String handleRequest(HttpServletRequest request) {
//Implementation of your code.
} 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接