[JAVA] Ordnen Sie GET-Anforderungen im Frühjahr komplexen Objekten zu.

Was Sie tun möchten (Zweck)

Ordnen Sie die GET-Anforderung von Spring (URL-Parameter) einem komplexen Objekt (Bean) zu.

Fazit

Verwenden Sie keine Mapping-Anmerkungen. Oder Verwenden Sie "@ ModelAttribute".

Umgebung

Spring Boot:2.1.6

Andere verwendete Bibliotheken

lombok

Quelle für die Überprüfung von Textilien

Zuordnungsziel

Übergeordnetes Objekt

@Data
@ToString
public class ComplexBean {
  private String hoge;
  private ChildBean childBean;
  private List<ItemBean> itemBeans;
}

Untergeordnetes Objekt zum Verschachteln

@Data
@ToString
public class ChildBean {
  private String piyo;
}

Objekt für Liste

@Data
@ToString
public class ItemBean {
  private String fuga;
}

Regler

@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();
  }
}

Überprüfung

Stellen Sie den Clientzugriff auf jeden Endpunkt mithilfe von REST-API-Tests wieder her

Zu überprüfender URL-Parameter

hoge=hoge&childBean.piyo=piyo&itemBeans[0].fuga=fuga0&itemBeans[2].fuga=fuga2

Ergebnis

Bei Verwendung von @ RequestParam (http://localhost:8080/param?hoge=hoge&childBean.piyo=piyo&itemBeans[0].fuga=fuga0&itemBeans[2].fuga=fuga2) Da die Zuordnungsinformationen nicht ausreichen, kann keine Analyse durchgeführt werden, und es tritt ein Fehler auf.

Resolved [org.springframework.web.bind.MissingServletRequestParameterException: Required ComplexBean parameter 'bean' is not present]

image.png

Bei Verwendung von @ ModelAttribute (http://localhost:8080/model?hoge=hoge&childBean.piyo=piyo&itemBeans[0].fuga=fuga0&itemBeans[2].fuga=fuga2) Wie erwartet zugeordnet. image.png

Ohne Anmerkung (http://localhost:8080/direct?hoge=hoge&childBean.piyo=piyo&itemBeans[0].fuga=fuga0&itemBeans[2].fuga=fuga2) Wie erwartet zugeordnet. image.png

Zusammenfassung

Auch bei URL-Parametern mit folgender Struktur

Verwenden Sie keine Mapping-Anmerkungen. Oder Verwenden Sie "@ ModelAttribute".

Wenn ja, kann es ~~ zugeordnet werden, aber lassen Sie uns das Design überprüfen, wenn es notwendig wird, einem solchen Objekt in der GET-Anforderung ~~ zuzuordnen. Wenn die Sequenznummer wie bei der Überprüfung übersprungen wird, wird für die übersprungene Verzweigungsnummer "null" gesetzt. (⇒ Es wird kein leeres Objekt sein)

Recommended Posts

Ordnen Sie GET-Anforderungen im Frühjahr komplexen Objekten zu.
Holen Sie sich Cookies im Frühling
Wie man Lombok im Frühling benutzt
Holen Sie sich null-sichere Map-Werte in Java
So erhalten Sie Parameter in Spark
Konvertieren Sie Anforderungsparameter im Frühjahr in Enum
Antwortdaten direkt im Frühjahr schreiben
So erhalten Sie das Datum mit Java
So erhalten Sie den Einstellungswert (Eigenschaftswert) aus der Datenbank in Spring Framework
[Spring Boot] So rufen Sie Eigenschaften dynamisch aus einer in einer URL enthaltenen Zeichenfolge ab
So erhalten Sie Keycloak-Anmeldeinformationen in der Interceptor-Klasse
So erhalten Sie eine Klasse von Element in Java
So fügen Sie in Spring Boot einen Klassenpfad hinzu
Bibliothek "OSHI" zum Erfassen von Systeminformationen mit Java
So binden Sie mit einer Eigenschaftendatei in Spring Boot
So definieren Sie mehrere orm.xml in Spring4, JPA2.1
Ich möchte den Wert in Ruby erhalten
[Java] So erhalten Sie den Schlüssel und den Wert, die in Map gespeichert sind, durch iterative Verarbeitung
Holen Sie sich im Frühjahr mehrere Ressourcen, die dem Muster entsprechen
ARKit: Benennen Sie Objekte in Reality Composer und rufen Sie Namen in Swift ab
Ordnen Sie DTO automatisch Entitäten mit der Spring Boot-API zu
So erhalten Sie Informationen zu zugeordneten Tabellen in vielen-zu-vielen-Tabellen
So erstellen Sie ein Spring Boot-Projekt in IntelliJ
Quelle zum Abrufen der Umleitungsquell-URL in Java
Ich habe versucht, mit Spring Data JPA zu beginnen
Abrufen von Gebietsschemaobjekten für alle in Java verfügbaren Gebietsschemas
Wo Sie sich beim Spark-Routing in den Spezifikationen verlieren können
Verwendung von CommandLineRunner im Spring Batch von Spring Boot
So testen Sie den Bildschirm zum Hochladen von Dateien mit Spring + Selenium
Führen Sie swagger-ui in die in Spring Boot implementierte REST-API ein
Verwendung des In-Memory-Job-Repositorys mit Spring Batch