У меня есть метод контроллера, как такДополнительный <Integer> нет, пока она отправляется
@RequestMapping(value = "/update", method = RequestMethod.POST)
RestResponse updateId(@RequestParam(value = "cityId") Optional<Integer> cityId) {
}
Теперь, когда я посылаю cityId
без значения, cityId.isPresent()
возвращает ложь, что это неправильно, потому что я на самом деле включены 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
?
Я не понимаю, даже если он не имеет значения_. Если он присутствует, что возвращает 'cityId.get()'? –
Лично я бы не использовал 'Факультативный' для этого сценарий. В любом случае вы все равно проверяете «null». – Makoto
@SotiriosDelimanolis cityId.get() выдает исключение «NoSuchElementException», но cityId был отправлен с помощью запроса, он просто не имеет значения. бит низкого уровня, и я проверил 'ServletReques t' в моем Token Filter и действительно cityId есть, но по какой-то причине он не передается контроллеру. скриншот http://i.imgur.com/CP9cytQ.png – prettyvoid