0

私はそのようなコントローラーメソッドを持っています

  @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ますか?

4

1 に答える 1