@FormParameter在spring -mvc中

时间:2013-12-16 20:48:28

标签: spring-mvc

在spring-mvc中,在控制器代码中我看到了显式传递的表单参数。为什么这样做?

public ModelAndView methodXX(
        @FormParam("arg1") String arg1,
        @FormParam("arg2") String arg2,
        @FormParam("arg3") String arg3,
        HttpServletRequest request, HttpServletResponse response)

如果电话如下:

public ModelAndView methodXX(HttpServletRequest request,HttpServletResponse response) 

仍然可以使用

获得arg1,arg2,arg3

request.getParameter(“arg1”)等等。 使用FormParam有什么好处?

2 个答案:

答案 0 :(得分:8)

Spring MVC中没有@FormParam注释,至少在我所知道的任何版本中都没有。 Spring MVC有@RequestParam

主要好处是减少调用中的代码重复

request.getParameter("arg1");

但是,@RequestParam还有其他参数,即requireddefaultValue。将required设置为true后,如果getParameter返回null,Spring将抛出异常。将required设置为false后,Spring会调用getParameter并传递它找到的任何内容,无论是null还是实际值。

使用defaultValue,如果getParameter返回null,您可以设置默认值。

所以不要做

String arg1 = request.getParameter("arg1");
if (arg1 == null) {
    arg1 = "default value";
}

您只需将以下内容添加为方法参数

即可
..., @RequestParam(value = "arg1", defaultValue = "default value") String arg1, ...

答案 1 :(得分:0)

如果您在请求中使用application / x-www-form-urlencoded内容类型, 您可以在POST正文中发送数据。

method = RequestMethod.POST,consumemes =“application / x-www-form-urlencoded”

在这种情况下,POST请求正文中的数据必须是格式 ARG1 = 1&安培; ARG2 = 5&安培; ARG3 = 6

在Chrome浏览器的Postman插件中为请求正文类型选择“原始”,以进行测试。

还设置标题: Content-Type application / x-www-form-urlencoded