[JAVA] Spring Boot Form

Überblick

Ich mache eine Webanwendung mit springBoot in meinem Unternehmen und werde die Tipps zu Form vorstellen, die ich dort gelernt habe.

So legen Sie den Anfangswert für das Formularfeld fest

Möglicherweise möchten Sie einen Anfangswert festlegen, wenn Sie ein Formular in der Ansicht anzeigen. Es gibt verschiedene Möglichkeiten.

Im Konstruktor festlegen

Das Formular wird generiert, wenn der Controller durch Festlegen von @ModelAttribute aufgerufen wird, und wird automatisch in das Modell gepackt. Wenn Sie also einen Konstruktor festlegen, der den Wert zum Zeitpunkt der Generierung festlegt, wird der Wert zum Zeitpunkt der Initialisierung festgelegt

Form.java


@Getter
@Setter
public class Form {
  private String name;
  private int age;

  Form() {
    this.name = "hoge";
    this.age = 18;
  }
}

Seien Sie jedoch vorsichtig, wenn Sie einen Konstruktor mit den unten gezeigten Argumenten angeben.

Form.java


@Getter
@Setter
public class Form {
  private String name;
  private int age;

  Form(String name, int age) {
    this.name = name;
    this.age = age;
  }
}

Dies allein beim POSTEN des Wertes des Formulars

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.IllegalStateException: No primary or default constructor found for class com.example.demo.ParsonForm] with root cause

Ich bekomme so einen Fehler. Dies geschieht, weil es keinen Konstruktor ohne Argumente gibt. Wenn Sie also einen Konstruktor mit Argumenten verwenden, schreiben Sie den Konstruktor ohne Argumente sowie unten.

Form.java


@Getter
@Setter
public class Form {
  private String name;
  private int age;

  Form(String name, int age) {
    this.name = name;
    this.age = age;
  }

  Form() {
  }
}

Wird vom Setter im Controller eingestellt

Sie kann auch vom Setter im Controller angegeben werden. Vergessen Sie in diesem Fall jedoch nicht, das Formular mit dem Mehrwert an das Modell zu übergeben.

indexController.java


@RequestMapping("/new")
public String index(Form form) {
  form.setName("hoge");
  form.setAge(18);
  model.addAttribute("form",form);
  return "index";
}

Set von Thymeleaf

Sie können auch einen Wert mit dem Wert th: in der Ansicht hinzufügen. In diesem Fall sind jedoch die folgenden Vorsichtsmaßnahmen erforderlich.

index.html


<form method="post" action="/" th:object="${form}">
  <input type="text" name="name" th:value="*{name == null ? 'hoge' : name">
  <input type="text" name="age" th:value="*{age == null ? 18 : age}">
</form>

Behandeln Sie verschachtelte Objekte in Form

Spring Form ist praktisch, da Sie die Validierung einfach mit Anmerkungen festlegen können. Wenn Sie jedoch mit komplexeren Datenstrukturen arbeiten möchten, können Sie verschachtelte Objekte verwenden.

Das folgende Parson-Formular enthält beispielsweise mehrere itemNames und itemSizes. ..

ParsonForm


@Getter
@Setter
public class ParsonForm {

  private String name;

  private itemName1;
  
  private itemName2;

  private itemSize1;

  private itemSize2;
}

Sie können auch schreiben, aber ein Artikelmodell für Folgendes erstellen:

Item.java


@Getter
@Setter
public class Item {

  private String name;

  private int size;

}

Es wird sauberer sein, es als Sammlung zu schreiben.

ParsonForm


@Getter
@Setter
public class ParsonForm {

  private String name;

  private Collection<Item> items;

}

Validierung verschachtelter Objekte

Wenn Sie die Elemente im verschachtelten Objekt weiter validieren möchten, Fügen Sie einfach die Annotation @Valid in die ParsonForm-Elemente ein Die Validierung in Item.java funktioniert.

Parson


@Getter
@Setter
public class ParsonForm {

  private String name;

  @Valid
  private Collection<Item> items;

}

Item.java


@Getter
@Setter
public class Item {
  
  @NotBlank
  private String name;

  @Max(100)
  @Min(1)
  private int size;

}

Hinweise zum Erweitern verschachtelter Objekte

Stellen Sie sicher, dass Sie das Array [] hinzufügen, um es im Feld th: anzugeben.

form.html


  <form class="parsonForm" th:action="@{/}" th:method="post" th:object="${parsonForm}">
    <input type="text" th:field="*{name}">
    <input type="text" th:field="*{items[0].name}">
    <input type="text" th:field="*{items[0].size}">
    <input type="text" th:field="*{items[1].name}">
    <input type="text" th:field="*{items[1].size}">
    <input type="submit">
  </form>

Referenz

https://qiita.com/yo1000/items/b58a1ae8b3e51fdda479 https://area-b.com/blog/2015/02/04/2009/

Recommended Posts

Spring Boot Form
Spring Boot Denken Sie daran
gae + frühlingsstiefel
[Einführung in Spring Boot] Überprüfung der Formularvalidierung
Formularklassenvalidierungstest mit Spring Boot
SPRING BOOT Lernaufzeichnung 01
Frühlingsstiefel + Heroku Postgres
spring taglib: Formularnotizen
Schreiben von Frühlingsstiefel-Memos (1)
Erster Frühlingsstiefel (DI)
SPRING BOOT Lernprotokoll 02
Spring Boot-Ausnahmebehandlung
Spring Boot Servlet-Zuordnung
Spring Boot Entwicklung-Entwicklungsumgebung-
Spring Boot-Lernverfahren
Spring Boot lernen [Anfang]
Schreiben von Spring Boot-Memos (2)
Spring Boot 2.2 Dokumentzusammenfassung
Spring Boot 2.3 Verfügbarkeit von Anwendungen
Spring Boot Tutorials Themen
Mit Spring Boot herunterladen
[Spring Boot] Umgebungskonstruktion (macOS)
Versuchen Sie Spring Boot von 0 bis 100.
Generieren Sie mit Spring Boot einen Barcode
Hallo Welt mit Spring Boot
Spring Boot unter Microsoft Azure
Implementieren Sie GraphQL mit Spring Boot
Aufgabenplan für das Spring Boot Tutorial
Spring 5 & Spring Boot 2 Praktisches Vorbereitungsverfahren
Beginnen Sie mit Spring Boot
Spring Boot 2 Multiprojekt mit Gradle
[Spring Boot] Erstellung von Webanwendungen
Führen Sie LIFF mit Spring Boot aus
SNS-Login mit Spring Boot
Spring Boot Hot Swapping-Einstellungen
Einführung in Spring Boot ~ ~ DI ~
Datei-Upload mit Spring Boot
Spring Boot beginnt mit dem Kopieren
Einführung in Spring Boot ② ~ AOP ~
[Einführung in Spring Boot] Senden Sie ein Formular mit thymeleaf
CICS-Java-Anwendung ausführen- (4) Spring Boot-App
Spring Boot + Springfox Springfox-Boot-Starter 3.0.0 Verwendung
Tipps zur Spring Boot DB
Hallo Welt mit Spring Boot
[Spring Boot] Einfaches Rezept für den Paging-Prozess
Verwenden Sie Spring JDBC mit Spring Boot
Aufbau der Docker x Spring Boot-Umgebung
Wichtige Änderungen in Spring Boot 1.5
Modul mit Spring Boot hinzufügen
Erste Schritte mit Spring Boot
NoHttpResponseException in Spring Boot + WireMock
[Spring Boot] Senden Sie eine E-Mail
Einstellungen für die Spring Boot-Leistung
Einführung in Spring Boot Teil 1
Spring Boot Externe Einstellungspriorität
Versuchen Sie es mit Spring Boot Security
[Java] [Spring] Spring Boot 1.4-> 1.2 Downgrade Hinweis
Versuchen Sie Spring Boot auf dem Mac
Erstellen Sie mit Spring Boot einen Mikrodienst
Spring Boot DB-Verbindungspool