環境
- Spring Boot 1.5.9
- Spring web 4.3.13
- Java8
質問
@RequestParam
を付与しないとき、どう解釈されているかを教えていただきたいです。
以下のコードは、URLクエリが?name=test&id=2
のようなものであることを、想定しています。
【質問1】メソッド引数の型がString, intなど基本的な型の場合
java
1@Controller 2public class SampleController { 3 @GetMapping("/search2") 4 @ResponseBody 5 String search2(String name, int id ) { 6 String result = "name="+name + ",id=" + id; 7 return result; 8 } 9}
上記のように@RequestParam
が付与されていないコードは、下記のように解釈されている、ということで合っていますか?
java
1 @GetMapping("/search2") 2 @ResponseBody 3 String search2(@RequestParam(name="name") String name, @RequestParam(name="id") int id ) { 4 String result = "name="+name + ",id=" + id; 5 return result; 6 }
@RequestParam
の公式サイトに、以下のように書かれていました。
If the method parameter is Map<String, String> or MultiValueMap<String, String> and a parameter name is not specified, then the map parameter is populated with all request parameter names and values.
「a parameter name is not specified...」という文から、上記のように解釈した。
【質問2】メソッド引数の型がBeanクラスの場合
java
1@Controller 2public class SampleController { 3 @GetMapping("/search3") 4 @ResponseBody 5 String search3(SampleBean params) { 6 String result = "name="+params.getName() + ",id=" + params.getId(); 7 return result; 8 } 9 10 @Data //lombok annotation(Generate Getter or Setter) 11 public static class SampleBean { 12 String name; 13 int id; 14 } 15 16}
上記のように@RequestParam
が付与されていないコードは、どのように解釈されますか?
なぜ、アノテーションを付与しなくてもリクエストパラメータを取得できるのかが、疑問です。
@RequestParam
とは違うアノテーションが付与されていると、解釈されているのでしょうか?

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/31 06:49