说我有一个接受请求的端点,如下所示:
GET https://my.website.com/products?expired
OR
GET https://my.website.com/products
我期望的方法:
@GetMapping
public List<Product> products(@RequestParam(value = "expired", required=false) boolean expired) {
//Implementation details
}
但是,这将返回错误的请求400
响应。
我知道我可以通过将expired
requestParam作为expired=true
发送来使其工作,但是我希望它类似于HTML boolean attributes的工作,其中仅存在请求param代表true
,不存在则代表false
答案 0 :(得分:4)
使用Boolean
而不是boolean
-您遇到的问题是,您试图将null
的值取消装箱到原始boolean
的值,该值会导致NullpointerException
以及进一步的错误请求400
响应
public List<Product> products(@RequestParam(value = "expired", required=false) Boolean expired)
答案 1 :(得分:0)
我想知道您是否必须实现两种方法,一种带有和不带有参数的方法,第二种需要它(可能是Boolean
非原始的,如另一个答案所示)。
(然后只从这两者调用一个通用方法。)