Java 请求参数的存在应评估为true

Java 请求参数的存在应评估为true,java,spring,http,spring-mvc,Java,Spring,Http,Spring Mvc,假设我有一个端点,它接受如下请求: GEThttps://my.website.com/products?expired 或 GEThttps://my.website.com/products 我期望的工作方法是: @GetMapping public List<Product> products(@RequestParam(value = "expired", required=false) boolean expired) { //Implementation detai

假设我有一个端点,它接受如下请求:

GEThttps://my.website.com/products?expired

GEThttps://my.website.com/products

我期望的工作方法是:

@GetMapping
public List<Product> products(@RequestParam(value = "expired", required=false) boolean expired) {
   //Implementation details
}
@GetMapping
公共列表产品(@RequestParam(value=“expired”,required=false)布尔值过期){
//实施细节
}
但是,这将返回错误的请求
400
响应


我知道我可以通过将
expired
requestParam作为
expired=true
发送来实现这一点,但我希望它的工作原理类似于只存在一个请求参数表示
true
,而不存在它表示
false

使用
Boolean
而不是
Boolean
——问题是您试图将
null
值解装箱到基本
Boolean
,而操作导致
NullpointerException
和进一步的错误请求
400
响应

public List<Product> products(@RequestParam(value = "expired", required=false) Boolean expired)
公共列表产品(@RequestParam(value=“expired”,required=false)布尔过期)

我想知道您是否必须实现两种方法,一种是带参数的,另一种是不带参数的,第二种是需要的(另一种答案可能是
Boolean
non-primitive)


(然后从两者调用一个通用方法。)

GET
请求发送到
https://my.website.com/products?expired
将计算
单击
变量至
空值的值
@Robin Hoodie That;'是的。所以你需要像对待was
false
一样对待
null
来实现你想要的。但这并不能满足我的问题,
expired
request参数的存在应该足以使其评估为
true
Ok,我明白了-我相信您试图以一种简单的方式实现的目标是不可能的,即使您这样做也会产生误导。您应该为自己的目的创建特定的端点,如
website.com/products/expired
,或者继续设置特定的
true/false