1. ホーム

[解決済み】Spring MVCの@RequestParamでオプションのパラメータを処理する。

2022-04-10 19:48:39

質問

Springのコントローラで、両方のリクエストを処理することは可能でしょうか?

1) http://localhost:8080/submit/id/ID123432?logout=true

2) http://localhost:8080/submit/id/ID123432?name=sam&password=543432

種類のコントローラを1つ定義すると。

 @RequestMapping (value = "/submit/id/{id}", method = RequestMethod.GET,   
 produces="text/xml")
public String showLoginWindow(@PathVariable("id") String id,
                              @RequestParam(value = "logout", required = false) String logout,
                              @RequestParam("name") String username,
                              @RequestParam("password") String password,
                              @ModelAttribute("submitModel") SubmitModel model,
                              BindingResult errors) throws LoginException {...}

を含むHTTPリクエストは受け付けられません。

各リクエストを個別に処理するために2つのコントローラを定義すると、Springは例外"There is already 'Controller' bean method ... mapped"で訴えます。

どうすればいいですか?

を与える必要があります。 required = false に対して namepassword のリクエストパラメータも同様です。というのも、リクエストパラメータとして logout パラメータは、実際には namepassword も必須であることに変わりはありません。

を与えるだけで、うまくいきました。 namepassword なぜなら logout のおかげで必須のパラメータではありませんでした。 required = false に対して既に与えられている logout .