2
@RequestMapping(value = "/Fin_AddBankAccount", method = RequestMethod.POST)
public @ResponseBody JsonResponse addCoaCategory(
    @RequestParam(value="code", required=true) long code,
    @RequestParam(value="startFrom", required=true) long startFrom,
    @RequestParam(value="name", required=true, defaultValue="N/A") String name)
    {

    }

defaultValue="N/A" 不起作用,因为我没有在名称字段中提供任何文本,所以它在数据库中存储 null 而不是“N/A”?

4

4 回答 4

4

如果您真的想要该参数,那么设置默认值有什么意义。如果您将其标记为必需 true(不需要,因为它是默认值),则不需要默认值。如果该参数不是强制性的,则将其标记为 false 并给出默认值。

于 2013-05-12T05:44:48.977 回答
1

Spring的文档RequestParam.required

默认为 true,如果请求中缺少参数,则会引发异常。如果您希望在缺少参数的情况下使用 null,请将其切换为 false。

从您的问题中,我发现您正在name使用 POST 请求发送具有空值的参数。根据 Spring 文档,您不应name在请求中发送参数以使用默认值。name如果它是空的,只需从 HTML 表单中删除字段。

似乎默认值对 GET 请求更有意义。

于 2013-05-12T11:21:23.080 回答
1

确保不传递空字符串值有效方法: 1. Fin_AddBankAccount?name= O/P: name="N/A"

  1. Fin_AddBankAccount?O/P:名称="N/A"

无效方法: Fin_AddBankAccount?name="" 这会将空字符串设置为变量,即 name="";

于 2019-10-29T10:44:40.223 回答
0

在我的项目中

@RequestParam(value="name", required=true, defaultValue="N/A") String name

当未提供请求参数“名称”时,此代码正确地将名称变量设置为默认值 N/A。我的猜测是您没有将此名称变量正确插入表中,因此数据库存储的是 null 而不是“N/A”。请向我们展示或仔细检查数据访问对象代码。祝你好运


感谢@Tiarê Balbi,实际上您不需要“required=true”,因为 defaultValue="N/A" 无论如何都会将此变量隐式设置为 required=false。

于 2013-05-12T05:46:58.617 回答