我有以下代码:
@RequestMapping(method = RequestMethod.POST)
public ModelAndView editItem(String name, String description)
然而,某些时候没有传入描述(这是一个简单的例子而不是真实的),我想使描述成为可选的,如果没有传入则可能填写默认值。
任何人都知道如何做到这一点?
非常感谢!
杰森
答案 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。
更新& 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参数的情况下解决此问题的方法。