From 230155df933526515c0da64379b0f571ab46b28c Mon Sep 17 00:00:00 2001 From: Rhys Evans <EvansRM17@cardiff.ac.uk> Date: Mon, 27 Nov 2023 21:46:56 +0000 Subject: [PATCH] created basic thymeleaf form with basic get/postMapping functionality --- build.gradle | 3 ++ .../Team5/SmartTowns/Landmarks/Landmarks.java | 12 +++++- .../SmartTowns/Landmarks/LandmarksArray.java | 14 +++++++ .../Landmarks/LandmarksController.java | 41 ++++++++++++++++--- .../resources/templates/LandmarkFormTh.html | 31 ++++++++++++++ .../templates/Landmarks/LandmarkFormTh.html | 20 --------- 6 files changed, 94 insertions(+), 27 deletions(-) create mode 100644 src/main/resources/templates/LandmarkFormTh.html delete mode 100644 src/main/resources/templates/Landmarks/LandmarkFormTh.html diff --git a/build.gradle b/build.gradle index de322fce..35e48fec 100644 --- a/build.gradle +++ b/build.gradle @@ -28,6 +28,9 @@ dependencies { developmentOnly 'org.springframework.boot:spring-boot-devtools' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' + implementation 'org.springframework.boot:spring-boot-starter-validation' +// implementation 'org.springframework.boot:spring-boot-starter-jdbc' +// implementation 'org.mariadb.jdbc:mariadb-java-client:2.1.2' } tasks.named('bootBuildImage') { diff --git a/src/main/java/Team5/SmartTowns/Landmarks/Landmarks.java b/src/main/java/Team5/SmartTowns/Landmarks/Landmarks.java index 08589245..e6b284ff 100644 --- a/src/main/java/Team5/SmartTowns/Landmarks/Landmarks.java +++ b/src/main/java/Team5/SmartTowns/Landmarks/Landmarks.java @@ -1,5 +1,8 @@ package Team5.SmartTowns.Landmarks; +import lombok.AllArgsConstructor; +import lombok.Data; +@Data public class Landmarks { private String landmarkName; private String landmarkDescription; @@ -7,12 +10,17 @@ public class Landmarks { private int trailID; + public Landmarks(){ + this.landmarkName =""; + this.landmarkDescription =""; + this.landmarkLocation =""; + this.trailID =0; + } + public Landmarks(String landmarkName, String landmarkDescription, String landmarkLocation, int trailID) { this.landmarkName = landmarkName; this.landmarkDescription = landmarkDescription; this.landmarkLocation = landmarkLocation; this.trailID = trailID; } - - } diff --git a/src/main/java/Team5/SmartTowns/Landmarks/LandmarksArray.java b/src/main/java/Team5/SmartTowns/Landmarks/LandmarksArray.java index 78fc4363..0d246dda 100644 --- a/src/main/java/Team5/SmartTowns/Landmarks/LandmarksArray.java +++ b/src/main/java/Team5/SmartTowns/Landmarks/LandmarksArray.java @@ -9,8 +9,22 @@ public class LandmarksArray { LandmarksArray() { landmarksList = new ArrayList<>(); //ArrayList is mutable + landmarksList.addAll( + List.of( + new Landmarks("park","desc","loc",2) + ) + ); } + +// public static UserArray getInstance() { +// if (singleton == null) { +// singleton = new UserArray(); +// +// } +// return singleton; +// } + } diff --git a/src/main/java/Team5/SmartTowns/Landmarks/LandmarksController.java b/src/main/java/Team5/SmartTowns/Landmarks/LandmarksController.java index b5a56d82..3148324b 100644 --- a/src/main/java/Team5/SmartTowns/Landmarks/LandmarksController.java +++ b/src/main/java/Team5/SmartTowns/Landmarks/LandmarksController.java @@ -1,21 +1,52 @@ package Team5.SmartTowns.Landmarks; - import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.servlet.ModelAndView; +//import jakarta.validation.Valid; @Controller public class LandmarksController { + @GetMapping("/landmarkSubmission") public ModelAndView landmarkSubmission(){ - ModelAndView modelAndView = new ModelAndView("Landmarks/LandmarkFormTh.html"); - modelAndView.addAllObjects("Landmarks", new Landmarks()); - return modelAndView; - + ModelAndView modelAndView1 = new ModelAndView("LandmarkFormTh.html"); + modelAndView1.addObject("landmarkData", new Landmarks()); + return modelAndView1; + } + @PostMapping("/landmarkSub") + public ModelAndView landmarkSent( @ModelAttribute("landmarkData") Landmarks landmarks ) { + +// LandmarksArray userArray = LandmarksArray.getInstance(); +// Landmarks newUserSubmission = new Landmarks(landmarkData.getFormUsername(),userSubmission.getFormEmail(), +// userSubmission.getFormPark(), userSubmission.getFormDescription(),userSubmission.getFormCafe(), userSubmission.getFormToilets()); +// userArray.addUserSubmission(newUserSubmission); +// System.out.println(userArray.getFormItems()); +// + ModelAndView modelAndView = new ModelAndView("redirect:/test.html"); + return modelAndView; + + + + + + } + +// @PostMapping("/landmarkSubmission") +// public ModelAndView landmarkSubmission( Landmarks landmarks){ +// System.out.println(landmarks); +// ModelAndView modelAndView = new ModelAndView("redirect:/thankyou.html"); +// +// return modelAndView; +// +// } } diff --git a/src/main/resources/templates/LandmarkFormTh.html b/src/main/resources/templates/LandmarkFormTh.html new file mode 100644 index 00000000..9a2bf495 --- /dev/null +++ b/src/main/resources/templates/LandmarkFormTh.html @@ -0,0 +1,31 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="UTF-8"> + <title>Landmark Sign Up</title> +</head> +<body> +<main> + <form action="/landmarkSub" id="landmarkSubmission" name="landmarkSubmission" method="post" th:object="${landmarkData}"> + + + <label>Business Name: + <input type="text" th:field="*{landmarkName}"> + </label><br> + <label>Please Describe Your Business:<br> + <textarea th:field="*{landmarkDescription}" rows="6" cols="80"></textarea> + </label><br> + <label>Your town/city: + <input type="text" th:field="*{landmarkName}"> + </label><br> + <label>Trail: + <input type="text" th:field="*{trailID}"> + </label><br> + + <input type="submit"> + </form> + +</main> + +</body> +</html> \ No newline at end of file diff --git a/src/main/resources/templates/Landmarks/LandmarkFormTh.html b/src/main/resources/templates/Landmarks/LandmarkFormTh.html deleted file mode 100644 index 74e5194d..00000000 --- a/src/main/resources/templates/Landmarks/LandmarkFormTh.html +++ /dev/null @@ -1,20 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head> - <meta charset="UTF-8"> - <title>Landmark Sign Up</title> -</head> -<body> -<main> - <form action="/LandmarkSubmission" name="landmarkSubmission"> - - - - - - </form> - -</main> - -</body> -</html> \ No newline at end of file -- GitLab