REST RequestParam可选参数

时间:2015-12-01 05:29:20

标签: java spring rest

我有一个可以调用的接口方法 -

{{url}}/packageName/{{var}}/list

它可以包含Collection<String>类型的参数,因此我可以获取特定结果。

{{url}}/packageName/{{var}}/list?paramIds=param1&paramIds=param2

现在,如果我将paramIds保留为空,如下所示,Spring MVC会创建LinkedHashMap,大小为0,我得不到任何结果。

{{url}}/packageName/{{var}}/list?paramIds=

这是我的注释@RequestParam(value = "paramIds", required = "false") Collection<String> paramIds

我试图摆脱required并使用defaultValue但无法将defaultValue设置为null

现在我将注释更改为@RequestParam(value = "paramIds", defaultValue = "none")并在dao中添加代码以将“none”处理为null - 想知道是否有更好的方法来解决此问题。

提前致谢。

1 个答案:

答案 0 :(得分:0)

听起来像Spring给你最好的选择,空列表通常比null更好。

我的第一选择是修改你的DAO代码来处理一个空列表而不是期望null,但是假设这是不可能的,为什么不在你的控制器中检查如果集合为空则将null传递给你的DAO,比如:

if (paramsIds.isEmpty()) {
  dao.doSomething(null);
}