3 votes

Comment éviter qu'une RequestParam nulle ne déclenche une exception ?

Je travaille dans un environnement Spring Boot en utilisant Kotlin. J'ai créé un contrôleur avec une méthode annotée avec @GetMapping. Cette méthode a des paramètres de type @RequestParam déclarés comme type Double. Si j'essaie d'appeler ma méthode sans fournir ces paramètres, mon code lève l'exception suivante :

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.

Je suppose que les paramètres ont une valeur par défaut (probablement 0.0), mais Kotlin a besoin d'un objet qui peut être nul, donc l'exception est levée.

Tout fonctionne bien si je fournis les paramètres, mais je veux que mon code fonctionne si aucun paramètre n'est fourni.

Comment puis-je éviter cette exception ?

Voici à quoi ressemble mon contrôleur :

@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
            }

3voto

Roland Points 8368

Peut-être que la partie suivante de la documentation relative aux types de base vous aidera :

Sur la plate-forme Java, les nombres sont physiquement stockés comme des types primitifs de la JVM, à moins que nous n'ayons besoin d'une référence numérique nullable (par exemple Int ?) ou que des génériques soient impliqués. Dans ces derniers cas, les nombres sont mis en boîte.

Votre supposition pourrait être correcte alors. Essayez d'utiliser Double? et ça devrait être bon.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X