我有以下代码:
@RequestMapping(method = RequestMethod.POST)
public ModelAndView editItem(String name, String description)
Run Code Online (Sandbox Code Playgroud)
但是,某些时候描述没有被传入(这是一个简单的例子而不是真实的),我想使描述可选,如果没有传入,可能填写默认值.
任何人都知道如何做到这一点?
非常感谢!
贾森
Sla*_*hin 126
如果您使用的是Spring MVC 3.0或更高版本,那么只需设置defaultValue参数@RequestParam:
public ModelAndView editItem(@RequestParam(value = "description", defaultValue = "new value") String description)
Run Code Online (Sandbox Code Playgroud)
在Spring MVC 2.5中,我建议将value标记为as required = false并手动检查其值为null:
public ModelAndView editItem(@RequestParam(value = "description", required = false) String description) {
if (description == null) {
description = "new value";
}
...
}
Run Code Online (Sandbox Code Playgroud)
更新为JDK 8春天4.1+:现在你可以使用java.util.Optional这样的:
public ModelAndView editItem(@RequestParam("description") Optional<String> description) {
item.setDescription(description.getOrElse("default value"));
// or only if it's present:
description.ifPresent(value -> item.setDescription(description));
...
}
Run Code Online (Sandbox Code Playgroud)
DwB*_*DwB 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.
}
}
Run Code Online (Sandbox Code Playgroud)
注意:有关在不使用WebRequest参数的情况下解决此问题的方法,请参阅下面的内容(defaultValue和required).
| 归档时间: |
|
| 查看次数: |
47405 次 |
| 最近记录: |