在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,arg3request.getParameter(“arg1”)等等。 使用FormParam有什么好处?
答案 0 :(得分:8)
Spring MVC中没有@FormParam
注释,至少在我所知道的任何版本中都没有。 Spring MVC有@RequestParam
。
主要好处是减少调用中的代码重复
request.getParameter("arg1");
但是,@RequestParam
还有其他参数,即required
和defaultValue
。将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