【问题标题】:How can I prevent a null RequestParam raising an exception?如何防止 null RequestParam 引发异常?
【发布时间】:2019-01-17 10:54:30
【问题描述】:

我正在使用 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
            }

【问题讨论】:

    标签: spring model-view-controller kotlin null


    【解决方案1】:

    the documentation regarding basic types 的以下部分可能会对您有所帮助:

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

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

    【讨论】:

    • 我为自己没有早点想到这一点而感到羞愧。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2011-06-27
    • 2021-07-30
    • 2017-12-26
    • 1970-01-01
    • 2020-01-07
    • 2012-10-16
    • 2011-01-30
    • 1970-01-01
    相关资源
    最近更新 更多