[JAVA] Erstellen Sie eine einfache CRUD mit SpringBoot + JPA + Thymeleaf ~ ~ Validierung hinzufügen ~

Inhalt

スクリーンショット 2017-10-25 22.49.22.png

Verfahren

  1. Fügen Sie der Entität Validierungseinstellungen hinzu
  2. Fügen Sie der Steuerung eine Fehlerkontrolle hinzu
  3. Fügen Sie der Vorlage eine Fehlermeldung hinzu

1. Fügen Sie der Entität Validierungseinstellungen hinzu

--Validierungseinstellungen kommentieren Variablen der Entitätsklasse

src/main/java/com/example/baseball/domain/Player.java


    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @NotEmpty // ①
    private String name;
    @NotNull // ②
    @Min(value = 0) // ③
    @Max(value = 150)
    private Integer age;
    @Size(max = 20) // ④
    private String team;
    private String position;

-①: Wenn @ NotEmpty hinzugefügt wird, sind null und leere Zeichen nicht zulässig. -②: Wenn @ NotNull hinzugefügt wird, ist null nicht zulässig. --③: Stellen Sie den Minimalwert mit @ Min und den Maximalwert mit @ Max ein -④: Fügen Sie "@ Size" hinzu, um die Anzahl der Zeichen zu begrenzen

2. Fügen Sie der Steuerung eine Fehlerkontrolle hinzu

src/main/java/com/example/baseball/controller/PlayerController.java


    @GetMapping("new")
    public String newPlayer(Model model) {
        // ①
        Player player = new Player();
        model.addAttribute("player", player);
        return "players/new";
    }

    @PostMapping
    public String create(@Valid @ModelAttribute Player player, BindingResult bindingResult) { // ②
        if(bindingResult.hasErrors()) return "players/new"; // ③
        playerService.save(player);
        return "redirect:/players";
    }

    @PutMapping("{id}")
    public String update(@PathVariable Long id, @Valid @ModelAttribute Player player, BindingResult bindingResult) {
        if(bindingResult.hasErrors()) return "players/edit";
        player.setId(id);
        playerService.save(player);
        return "redirect:/players";
    }

-①: Übergeben Sie die Player-Instanz an den neuen Erstellungsbildschirm

@Valid @ModelAttribute Player player
//↑ und ↓ sind gleich
@Valid
@ModelAttribute
Player player

-②: Wenn ein Fehler vorliegt, werden die Fehlerinformationen in "BindingResult bindingResult" festgelegt. --③: Wenn ein Fehler auftritt, gibt bindingResult.hasErrors () true zurück. In diesem Fall wird der ursprüngliche Bildschirm wiederhergestellt.

3. Fügen Sie der Vorlage eine Fehlermeldung hinzu

new.html

src/main/resources/templates/players/new.html


      <!-- ① -->
      <form th:action="@{/players}" th:method="post" th:object="${player}">
        <!-- ② -->
        <div class="form-group" th:classappend="${#fields.hasErrors('name')}? has-error">
          <label class="control-label">Name</label>
          <input class="form-control" type="text" th:field="*{name}" />
          <!-- ③ -->
          <span class="text-danger" th:if="${#fields.hasErrors('name')}" th:errors="*{name}"></span>
        </div>
        <div class="form-group" th:classappend="${#fields.hasErrors('age')}? has-error">
          <label class="control-label">Alter</label>
          <input class="form-control" type="number" th:field="*{age}" />
          <span class="text-danger" th:if="${#fields.hasErrors('age')}" th:errors="*{age}"></span>
        </div>
        <div class="form-group" th:classappend="${#fields.hasErrors('team')}? has-error">
          <label class="control-label">Teamname</label>
          <input class="form-control" type="text" th:field="*{team}" />
          <span class="text-danger" th:if="${#fields.hasErrors('team')}" th:errors="*{team}"></span>
        </div>
        <div class="form-group" th:classappend="${#fields.hasErrors('position')}? has-error">
          <label class="control-label">Verteidigungsposition</label>
          <input class="form-control" type="text" th:field="*{position}" />
          <span class="text-danger" th:if="${#fields.hasErrors('position')}" th:errors="*{position}"></span>
        </div>
        <button class="btn btn-default" type="submit">Erstellen</button>
      </form>

--①: Da der Player jetzt vom Controller empfangen wird, setzen Sie ihn auf th: object.

edit.html

src/main/resources/templates/players/edit.html


      <form th:action="@{/players/{id}(id=*{id})}" th:method="put" th:object="${player}">
        <div class="form-group" th:classappend="${#fields.hasErrors('name')}? has-error">
          <label class="control-label">Name</label>
          <input class="form-control" type="text" th:field="*{name}" />
          <span class="text-danger" th:if="${#fields.hasErrors('name')}" th:errors="*{name}"></span>
        </div>
        <div class="form-group" th:classappend="${#fields.hasErrors('age')}? has-error">
          <label class="control-label">Alter</label>
          <input class="form-control" type="number" th:field="*{age}" />
          <span class="text-danger" th:if="${#fields.hasErrors('age')}" th:errors="*{age}"></span>
        </div>
        <div class="form-group" th:classappend="${#fields.hasErrors('team')}? has-error">
          <label class="control-label">Teamname</label>
          <input class="form-control" type="text" th:field="*{team}" />
          <span class="text-danger" th:if="${#fields.hasErrors('team')}" th:errors="*{team}"></span>
        </div>
        <div class="form-group" th:classappend="${#fields.hasErrors('position')}? has-error">
          <label class="control-label">Verteidigungsposition</label>
          <input class="form-control" type="text" th:field="*{position}" />
          <span class="text-danger" th:if="${#fields.hasErrors('position')}" th:errors="*{position}"></span>
        </div>
        <button class="btn btn-default" type="submit">aktualisieren</button>
      </form>

Funktionsprüfung

validation.gif

nächstes Mal

--Nächster ist hier

Recommended Posts

Erstellen Sie eine einfache CRUD mit SpringBoot + JPA + Thymeleaf ~ ~ Validierung hinzufügen ~
Erstellen Sie eine einfache CRUD mit SpringBoot + JPA + Thymeleaf ④ ~ Fehlermeldung anpassen ~
Erstellen Sie eine einfache CRUD mit SpringBoot + JPA + Thymeleaf ② ~ Bildschirm- und Funktionserstellung ~
Erstellen Sie mit SpringBoot + JPA + Thymeleaf ein einfaches CRUD ~ ~ Hallo Welt ~
Erstellen Sie eine einfache CRUD mit SpringBoot + JPA + Thymeleaf ⑤ ~ Common template ~
Erstellen Sie mit Dropwizard eine einfache Webanwendung
[Schienenentnahme] Erstellen Sie eine einfache Entnahmefunktion mit Schienen
Erstellen eines einfachen Balkendiagramms mit MPAndroidChart
Erstellen Sie mit Spring Boot eine einfache Such-App
Erstellen Sie mit Java + MySQL ein einfaches Bulletin Board
04. Ich habe mit SpringBoot + Thymeleaf ein Frontend gemacht
Erstellen Sie eine CRUD-App mit Spring Boot 2 + Thymeleaf + MyBatis
Zeigen Sie eine einfache Hallo Welt mit SpringBoot + IntelliJ
Erstellen Sie mit Spring Security 2.1 eine einfache Demo-Site mit Spring Security
Erstellen Sie einen Spielplatz mit Xcode 12
Erstellen Sie einen einfachen Webserver mit der Java-Standardbibliothek com.sun.net.httpserver
Zeichnen Sie den Bildschirm mit Thymeleaf in SpringBoot
Erstellen Sie mit Docker eine Vue3-Umgebung!
Implementieren Sie einen Textlink mit Springboot + Thymeleaf
Bean Validation mit Micronaut (Java) hinzufügen
Erstellen Sie Ausnahmen mit einer Fluid-Schnittstelle
Erstellen Sie ein Maven-Projekt mit Befehlen
Erstellen Sie einen einfachen Gateway-Server, indem Sie die Maskerade mit der Firewall-cmd von CentOS8 festlegen
Erstellen Sie mit dem Befehl eine JAR-Datei
[Rails6] Erstelle eine neue App mit Rails [Anfänger]
Erstellen Sie Ihren eigenen Validator mit Bean Validation
Erstellen Sie eine temporäre Klasse mit new Object () {}
[Docker] [Nginx] Erstellen Sie mit Nginx eine einfache ALB
XML-Deklaration hinzugefügt, wenn XML mit Spring-Boot zurückgegeben wird
[Rails 5] Erstelle eine neue App mit Rails [Anfänger]
Deserialisieren Sie XML mit Spring-Boot in eine Sammlung
Implementieren Sie CRUD mit Spring Boot + Thymeleaf + MySQL
Implementieren Sie eine einfache CRUD mit Go + MySQL + Docker
Versuchen Sie, mit der REST-API nach einer Postleitzahl zu suchen, indem Sie die Klassen SpringBoot, H2 DB und JPA REST-Only 3 erstellen.