Spring MVC默认值不起作用

时间:2013-05-12 05:12:08

标签: java spring spring-mvc http-request-parameters

@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 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

Spring RequestParam.required

的文档
  

默认值为true,导致在请求中缺少参数的情况下抛出异常。如果您在参数缺失的情况下更喜欢null,请将其切换为false。

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

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

答案 2 :(得分:0)

在我的项目中

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

当没有提供requestparam“name”时,此代码正确地将name变量设置为defaultvalue N / A.我的猜测是你没有正确地将这个名称变量插入到表中,因此数据库存储的是null而不是“N / A”。请告诉我们或仔细检查数据访问对象代码。祝你好运


谢谢@TiarêBalbi,事实上你不需要“required = true”因为defaultValue =“N / A”隐含地将这个变量设置为required = false。

答案 3 :(得分:0)

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

  1. Fin_AddBankAccount?     O / P:name =“ N / A”

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