当前位置: 首页 > 知识库问答 >
问题:

是否可以让空的RequestParam值使用DefaultValue?

弘和同
2023-03-14

如果我有一个类似于下面的请求映射:

@RequestMapping(value = "/test", method = RequestMethod.POST)
@ResponseBody
public void test(@RequestParam(value = "i", defaultValue = "10") int i) {
}
http://example.com/test?i=

我刚刚在spring 4.3.5中测试了这一点,并发现该行为现在实际上会将空值变为默认值,而不会引发NumberFormatException,因此;我原来的地图现在工作良好。

我不确定这种行为改变是在spring的哪一个版本中做出的。

共有1个答案

曹乐意
2023-03-14

您可以将@RequestParam类型更改为整数,并使其不是必需的。这将允许您的请求成功,但它将为空。您可以在controller方法中将其显式设置为默认值:

@RequestMapping(value = "/test", method = RequestMethod.POST)
@ResponseBody
public void test(@RequestParam(value = "i", required=false) Integer i) {
    if(i == null) {
        i = 10;
    }
    // ...
}

我已经从上面的示例中删除了defaultValue,但是如果您希望接收根本没有设置它的请求,您可能希望包含它:

http://example.com/test
 类似资料:
  • 问题内容: 如果我有一个类似于以下内容的请求映射: 然后使用以下命令调用此请求: 我收到错误消息 无法将’java.lang.String’类型的值转换为’int’类型;嵌套的异常是java.lang.NumberFormatException:对于输入字符串:“” 我可以通过停止javascript客户端发送空参数或接受字符串值并仅在未发现空白时进行解析来解决此问题。 更新 :春季的更高版本现在

  • 问题内容: 如果我有一个类似于以下内容的请求映射: 然后使用以下命令调用此请求: 我收到错误消息 我可以通过停止javascript客户端发送空参数或接受字符串值并仅在未发现空白的情况下进行解析来解决此问题。 更新:spring的更高版本现在实现了最初想要的行为。 我刚刚在spring4.3.5中对此进行了测试,发现该行为实际上实际上会将null值转换为默认值而不会引发NumberFormatEx

  • 我们知道我们可以将null赋给可为null的类型。例如: 我们知道第二种说法是有效的,因为有人告诉我们它是有效的,我们只是接受它,而不问为什么。但如果查看的源代码,则为: 我们可以将赋给为的原因是由于隐式运算符,它允许您隐式强制转换int为。根据隐式运算符的规则,作为的右手边,必须是结构类型,但显然不是合法的结构值,那么如何做(更不用说本身就是一个结构),为什么不违反隐式运算符规则

  • 问题内容: 是否可以在python中使用全1来初始化切片? 蟒蛇: 高朗 有可能做得更好吗? 问题答案: 是的,但是您必须使用其他语法。 它被称为“复合文字” 另外,如果有理由进行迭代(如计算基于循环变量的值等),则可以使用关键字而不是旧式,因为i等于i,小于i ++循环。

  • 问题内容: 如果是这样,那么在Objective-C中使用键值观察时是否没有其他键差异? 问题答案: (编辑以添加新信息):考虑使用Combine框架是否可以帮助您完成所需的工作,而不是使用KVO 是的,没有。KVO一直以来都在处理NSObject子类。它不适用于不继承NSObject的类。斯威夫特(目前至少)没有自己的原生观察系统。 (有关如何将其他属性公开为ObjC的信息,请参见注释,以便KV