Skip to content

Commit 93fe19d

Browse files
Updating controller and model to handle errors
1 parent 287f1f6 commit 93fe19d

3 files changed

Lines changed: 16 additions & 2 deletions

File tree

src/main/java/org/launchcode/codingevents/controllers/EventController.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package org.launchcode.codingevents.controllers;
22

3+
import jakarta.validation.Valid;
34
import org.launchcode.codingevents.data.EventData;
45
import org.launchcode.codingevents.models.Event;
56
import org.springframework.stereotype.Controller;
67
import org.springframework.web.bind.annotation.*;
78
import org.springframework.ui.Model;
9+
import org.springframework.validation.Errors;
810

911
import java.util.ArrayList;
1012
import java.util.List;
@@ -26,11 +28,19 @@ public String displayAllEvents(Model model) {
2628
@GetMapping("create")
2729
public String displayCreateEventForm(Model model) {
2830
model.addAttribute("title", "Create Event");
31+
model.addAttribute(new Event());
2932
return "events/create";
3033
}
3134

3235
@PostMapping("create")
33-
public String processCreateEventForm(@ModelAttribute Event newEvent) {
36+
public String processCreateEventForm(@ModelAttribute @Valid Event newEvent,
37+
Errors errors, Model model) {
38+
if(errors.hasErrors()) {
39+
model.addAttribute("title", "Create Event");
40+
model.addAttribute("errorMsg", "Bad data!");
41+
return "events/create";
42+
}
43+
3444
EventData.add(newEvent);
3545
return "redirect:/events";
3646
}

src/main/java/org/launchcode/codingevents/models/Event.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,14 @@ public class Event {
1414
private int id;
1515
private static int nextId = 1;
1616

17-
@NotBlank
17+
@NotBlank(message = "Name is required")
1818
@Size(min = 3, max = 50, message = "Name must be between 3 and 50 characters")
1919
private String name;
2020

2121
@Size(max = 500, message = "Description too long!")
2222
private String description;
2323

24+
@NotBlank(message = "Email is required")
2425
@Email(message = "Invalid email. Try again.")
2526
private String contactEmail;
2627

@@ -32,6 +33,7 @@ public Event(String name, String description, String contactEmail) {
3233
nextId++;
3334
}
3435

36+
public Event() {}
3537
public String getName() {
3638
return name;
3739
}

src/main/resources/templates/events/create.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
<header th:replace="fragments :: header"></header>
77

8+
<p th:text="${errorMsg}" style="color:red;"></p>
9+
810
<form method="post">
911
<div class="form-group">
1012
<label>Name

0 commit comments

Comments
 (0)