@FormParameter在spring -mvc中

Mar*_*ary 0 spring-mvc

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

public ModelAndView methodXX(
        @FormParam("arg1") String arg1,
        @FormParam("arg2") String arg2,
        @FormParam("arg3") String arg3,
        HttpServletRequest request, HttpServletResponse response)
Run Code Online (Sandbox Code Playgroud)

如果电话如下:

public ModelAndView methodXX(HttpServletRequest request,HttpServletResponse response) 
Run Code Online (Sandbox Code Playgroud)

arg1,arg2,arg3仍然可以通过使用获得

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

Sot*_*lis 8

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

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

request.getParameter("arg1");
Run Code Online (Sandbox Code Playgroud)

但是,@RequestParam也有其他参数,即requireddefaultValue.随着required集来true,Spring会抛出异常,如果getParameter回报null.随着required集来false,春天就会调用getParameter,并通过一切可能发现,无论是null或实际值.

使用defaultValue,您可以设置getParameter返回时的默认值null.

所以不要这样做

String arg1 = request.getParameter("arg1");
if (arg1 == null) {
    arg1 = "default value";
}
Run Code Online (Sandbox Code Playgroud)

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

..., @RequestParam(value = "arg1", defaultValue = "default value") String arg1, ...
Run Code Online (Sandbox Code Playgroud)