如何防止null RequestParam引发异常?

时间:2019-01-17 10:54:30

标签: spring model-view-controller kotlin null

我正在使用Kotlin在Spring Boot环境中工作。我用@GetMapping注释的方法制作了一个控制器。此方法有一些类型为@RequestParam的参数声明为Double类型。如果我尝试在不提供这些参数的情况下调用方法,则我的代码将引发以下异常:

java.lang.IllegalStateException: Optional double parameter 'latitude' is present but cannot be translated into a null value due to being declared as a primitive type.

我假设参数具有默认值(可能为0.0),但是Kotlin需要一个可以为null的对象,因此引发了异常。

如果我提供了参数,一切都会很好,但是如果没有提供参数,我希望我的代码能够正常工作。

如何避免这种例外情况?

这是我的控制器的外观:

@RestController
@RequestMapping("/api/stations")
class StationController {

    @GetMapping
            fun findAll(@RequestParam(value = "latitude", required = false) currentLatitude: Double,
                        @RequestParam(value = "longitude", required = false) currentLongitude: Double): ResponseEntity<List<Entity>> {
                //Method body
            }

1 个答案:

答案 0 :(得分:1)

也许the documentation regarding basic types的以下部分会为您提供帮助:

  

在Java平台上,除非我们需要可为空的数字引用(例如Int?)或涉及泛型,否则数字实际上是作为JVM基本类型存储的。在后一种情况下,数字用方框括起来。

那么您的猜测可能是正确的。尝试使用Double?,应该没问题。