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;'是的。所以你需要像对待wasfalse
一样对待null
来实现你想要的。但这并不能满足我的问题,expired
request参数的存在应该足以使其评估为true
Ok,我明白了-我相信您试图以一种简单的方式实现的目标是不可能的,即使您这样做也会产生误导。您应该为自己的目的创建特定的端点,如website.com/products/expired
,或者继续设置特定的true/false
值