我有一个像这样的控制器方法
@RequestMapping(value = "/update", method = RequestMethod.POST)
RestResponse updateId(@RequestParam(value = "cityId") Optional<Integer> cityId) {
}
现在,当我在cityId
没有值的情况下发送时,cityId.isPresent()
返回 false,这是错误的,因为我实际上包含cityId
在我的请求参数中,但我只是没有设置值。
我注意到这种行为不会发生在 上Optional<String>
,它实际上告诉我参数存在,即使它没有值。
那么我应该如何处理诸如此类的参数Optional<Integer>
呢?我只需要确定参数是否已发送,即使它没有值(因为它是可选的,如果发送时没有值,我必须更新数据库)
编辑:看起来我上面写的很混乱,我会尝试再次描述这个问题
@RequestMapping(value = "/temp", method = RequestMethod.POST)
void temporary(@RequestParam(value = "homeCityId") Optional<Integer> homeCityId) {
if(homeCityId.isPresent()) {
System.out.println("homeCityId is Present");
} else {
System.out.println("homeCityId is Not Present");
}
}
我提出一个包含homeCityId
空值的请求,我得到homeCityId is Not Present
. 如何区分具有homeCityId
空值的请求和根本不包含的请求homeCityId
?