如何在@RequestParam()中给出整数的默认值

Sid*_*esh 8 java spring-boot

我是春季靴子和学习的新手@RequestParam()

我知道我们可以在String中给出defaultValue,但是当我尝试将默认值设置为Integer时,它会向我显示错误.

@RequestMapping("/returnVeriable")
public int getVeriable(@RequestParam(required=true,defaultValue=1/*error here*/) int veri){
    return veri;
}
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

Fab*_*ira 8

当一个值流量通过 HTTP 协议时,它没有类型。它是一个字符串。所以它是在注释处的这个参数类型。然后,你做这样的事情:

@RequestParam(required = true, defaultValue = "1") Integer veri

它会正常工作。


小智 7

尝试在整数附近使用“”将其设置为字符串,因为defaultValue被实现为String。

@RequestMapping("/returnVeriable")
public int getVeriable(@RequestParam(required=true,defaultValue="1") Integer veri){
    return veri;
}
Run Code Online (Sandbox Code Playgroud)

参考:https : //jira.spring.io/browse/SPR-5915

  • 尽管“required=true”与“defaultValue”一起使用并没有多大意义,因为“defaultValue”隐式地将 required 设置为 false。 (2认同)
  • `Integer` 可以为空,但 `int` 不能。如果由于某种原因参数为空,则似乎他们输入了 0 而不是 null。 (2认同)

pvp*_*ran 6

这应该工作

@RequestMapping("/returnVariable")
public int getVariable(@RequestParam(required=true,defaultValue="1") int var) {
    return var;
}
Run Code Online (Sandbox Code Playgroud)

默认情况下,您传递给控制器​​的任何内容都被视为字符串并转换为相应的类型。所以即使是默认值也需要设置为 String

  • HTTP 请求参数始终是 `String`...从 `String` 到实际类型的转换是由 Spring 使用 `Converter`s 和 `PropertyEditor`s ​​完成的。 (2认同)