私はそのようなコントローラーメソッドを持っています
@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
ますか?