Как я могу предотвратить нулевое RequestParam, вызывающее исключение? - PullRequest
0 голосов
/ 17 января 2019

Я работаю в среде Spring Boot, используя Kotlin. Я сделал контроллер с методом, аннотированным @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 нужен объект, который может быть нулевым, поэтому возникает исключение.

Все работает нормально, если я предоставляю параметры, но я хочу, чтобы мой код работал, если параметры не предоставлены.

Как мне избежать этого исключения?

Вот как выглядит мой контроллер:

@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 голосов
/ 17 января 2019

Может быть, следующая часть документации по основным типам поможет вам:

На платформе Java числа физически хранятся как примитивные типы JVM, если только нам не нуженобнуляемая ссылка на номер (например, Int?) или генерики.В последних случаях числа заключены в квадрат.

Тогда ваше предположение может быть верным.Попробуйте использовать Double?, и все должно быть в порядке.

...