spring MVC中的可选POST参数?

时间:2011-04-06 18:39:57

标签: spring-mvc

我有以下代码:

@RequestMapping(method = RequestMethod.POST)
public ModelAndView editItem(String name, String description)

然而,某些时候没有传入描述(这是一个简单的例子而不是真实的),我想使描述成为可选的,如果没有传入则可能填写默认值。

任何人都知道如何做到这一点?

非常感谢!

杰森

2 个答案:

答案 0 :(得分:126)

如果您使用的是Spring MVC 3.0或更高版本,则只需设置defaultValue的{​​{1}}参数:

@RequestParam

在Spring MVC 2.5中,我建议将值标记为public ModelAndView editItem(@RequestParam(value = "description", defaultValue = "new value") String description) 并手动检查其值为null:

required = false

另见corresponding documentation about @RequestParam annotation


JDK 8的

更新& Spring 4.1+:现在you could use java.util.Optional就像这样:

public ModelAndView editItem(@RequestParam(value = "description", required = false) String description) {
    if (description == null) {
        description = "new value";
    }
    ...
}

答案 1 :(得分:18)

不使用@RequestParam作为可选参数,而是使用org.springframework.web.context.request.WebRequest类型的参数。例如,

@RequestMapping(method = RequestMethod.POST)
public ModelAndView editItem(
  @RequestParam("name")String name,
  org.springframework.web.context.request.WebRequest webRequest)
{
  String description = webRequest.getParameter("description");

  if (description  != null)
  {
     // optional parameter is present
  }
  else
  {
    // optional parameter is not there.
  }
}

注意:请参阅下面的内容(defaultValue和required),了解在不使用WebRequest参数的情况下解决此问题的方法。