Mappez la requête GET de Spring (paramètre URL) à un objet complexe (Bean).
N'utilisez pas d'annotations de mappage.
Ou
Utilisez @ ModelAttribute.
Spring Boot:2.1.6
lombok
Objet parent
@Data
@ToString
public class ComplexBean {
  private String hoge;
  private ChildBean childBean;
  private List<ItemBean> itemBeans;
}
Objet enfant pour l'imbrication
@Data
@ToString
public class ChildBean {
  private String piyo;
}
Objet pour liste
@Data
@ToString
public class ItemBean {
  private String fuga;
}
@ Data et @ ToString sont des annotations lombok
@ ToString est pour la vérification@RestController
public class DemoRestController {
  @GetMapping(value = "/param")
  @ResponseBody
  public String getParam(@RequestParam ComplexBean bean) {
    System.out.println(bean.toString());
    return bean.toString();
  }
  @GetMapping(value = "/model")
  @ResponseBody
  public String getModel(@ModelAttribute ComplexBean bean) {
    System.out.println(bean.toString());
    return bean.toString();
  }
  @GetMapping(value = "/direct")
  @ResponseBody
  public String getDirect(ComplexBean bean) {
    System.out.println(bean.toString());
    return bean.toString();
  }
}
Restlet Client-Access chaque point de terminaison à l'aide des tests d'API REST
hoge=hoge&childBean.piyo=piyo&itemBeans[0].fuga=fuga0&itemBeans[2].fuga=fuga2
Lors de l'utilisation de @ RequestParam
(http://localhost:8080/param?hoge=hoge&childBean.piyo=piyo&itemBeans[0].fuga=fuga0&itemBeans[2].fuga=fuga2)
Les informations de mappage étant insuffisantes, l'analyse ne peut pas être effectuée et une erreur se produit.
Resolved [org.springframework.web.bind.MissingServletRequestParameterException: Required ComplexBean parameter 'bean' is not present]

Lors de l'utilisation de @ ModelAttribute
(http://localhost:8080/model?hoge=hoge&childBean.piyo=piyo&itemBeans[0].fuga=fuga0&itemBeans[2].fuga=fuga2)
Mappé comme prévu.

Sans annotation
(http://localhost:8080/direct?hoge=hoge&childBean.piyo=piyo&itemBeans[0].fuga=fuga0&itemBeans[2].fuga=fuga2)
Mappé comme prévu.

Même avec des paramètres d'URL qui ont la structure suivante
N'utilisez pas d'annotations de mappage.
Ou
Utilisez @ ModelAttribute.
Si tel est le cas, il peut être mappé ~~, mais passons en revue la conception lorsqu'il devient nécessaire de mapper à un tel objet dans la requête GET ~~. Si le numéro de séquence est ignoré comme lors de la vérification, «null» est défini pour le numéro de branche ignoré. (⇒ Ce ne sera pas un objet vide)
Recommended Posts