From fc1650121091eb11d16f450a5d6b45dc82ecf2d5 Mon Sep 17 00:00:00 2001 From: Rhys Evans <EvansRM17@cardiff.ac.uk> Date: Tue, 28 Nov 2023 00:02:21 +0000 Subject: [PATCH] Further work on front end and back end verification --- .../Team5/SmartTowns/Landmarks/Landmarks.java | 21 +++++++----- .../Landmarks/LandmarksController.java | 17 ++++++++-- .../{ => Landmarks}/LandmarkFormTh.html | 34 +++++++++++++------ .../{templates.server => }/Templating.html | 0 4 files changed, 51 insertions(+), 21 deletions(-) rename src/main/resources/templates/{ => Landmarks}/LandmarkFormTh.html (59%) rename src/main/resources/templates/towns/{templates.server => }/Templating.html (100%) diff --git a/src/main/java/Team5/SmartTowns/Landmarks/Landmarks.java b/src/main/java/Team5/SmartTowns/Landmarks/Landmarks.java index 95422737..790090ac 100644 --- a/src/main/java/Team5/SmartTowns/Landmarks/Landmarks.java +++ b/src/main/java/Team5/SmartTowns/Landmarks/Landmarks.java @@ -1,11 +1,16 @@ package Team5.SmartTowns.Landmarks; +import jakarta.validation.constraints.Email; +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.NotEmpty; import lombok.AllArgsConstructor; import lombok.Data; @Data +@AllArgsConstructor public class Landmarks { + @NotEmpty(message = "You must type in a username.") private String landmarkName; - + @Email(message = "You must attach a contact address.") private String landmarkEmail; private String landmarkDescription; private String landmarkLocation; @@ -20,11 +25,11 @@ public class Landmarks { this.trailID =0; } - public Landmarks(String landmarkName, String landmarkEmail, String landmarkDescription, String landmarkLocation, Integer trailID) { - this.landmarkName = landmarkName; - this.landmarkEmail = landmarkEmail; - this.landmarkDescription = landmarkDescription; - this.landmarkLocation = landmarkLocation; - this.trailID = trailID; - } +// public Landmarks(String landmarkName, String landmarkEmail, String landmarkDescription, String landmarkLocation, Integer trailID) { +// this.landmarkName = landmarkName; +// this.landmarkEmail = landmarkEmail; +// this.landmarkDescription = landmarkDescription; +// this.landmarkLocation = landmarkLocation; +// this.trailID = trailID; +// } } diff --git a/src/main/java/Team5/SmartTowns/Landmarks/LandmarksController.java b/src/main/java/Team5/SmartTowns/Landmarks/LandmarksController.java index 7f3a520c..1e1df772 100644 --- a/src/main/java/Team5/SmartTowns/Landmarks/LandmarksController.java +++ b/src/main/java/Team5/SmartTowns/Landmarks/LandmarksController.java @@ -1,5 +1,6 @@ package Team5.SmartTowns.Landmarks; +import jakarta.validation.Valid; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; @@ -15,7 +16,7 @@ public class LandmarksController { @GetMapping("/landmarkSubmission") public ModelAndView landmarkSubmission(){ - ModelAndView modelAndView1 = new ModelAndView("LandmarkFormTh.html"); + ModelAndView modelAndView1 = new ModelAndView("Landmarks/LandmarkFormTh.html"); modelAndView1.addObject("landmarkData", new Landmarks()); return modelAndView1; @@ -23,9 +24,15 @@ public class LandmarksController { @PostMapping("/landmarkSub") - public ModelAndView landmarkSent( @ModelAttribute("landmarkData") Landmarks landmarks ) { + public ModelAndView landmarkSent(@Valid @ModelAttribute("landmarkData") Landmarks landmarks, BindingResult bindingResult, Model model ) { System.out.println(landmarks); + if (bindingResult.hasErrors()) { + ModelAndView modelAndView = new ModelAndView("Landmarks/LandmarkFormTh.html", model.asMap()); + return modelAndView; + + } else{ + // LandmarksArray userArray = LandmarksArray.getInstance(); // Landmarks newUserSubmission = new Landmarks(landmarkData.getFormUsername(),userSubmission.getFormEmail(), // userSubmission.getFormPark(), userSubmission.getFormDescription(),userSubmission.getFormCafe(), userSubmission.getFormToilets()); @@ -33,7 +40,11 @@ public class LandmarksController { // System.out.println(userArray.getFormItems()); // ModelAndView modelAndView = new ModelAndView("redirect:/test.html"); - return modelAndView; + return modelAndView; + + } + +// return modelAndView; diff --git a/src/main/resources/templates/LandmarkFormTh.html b/src/main/resources/templates/Landmarks/LandmarkFormTh.html similarity index 59% rename from src/main/resources/templates/LandmarkFormTh.html rename to src/main/resources/templates/Landmarks/LandmarkFormTh.html index f8e2ecb3..29a09b48 100644 --- a/src/main/resources/templates/LandmarkFormTh.html +++ b/src/main/resources/templates/Landmarks/LandmarkFormTh.html @@ -5,30 +5,36 @@ <title>Landmark Sign Up</title> </head> <body> +<header th:insert="~{/towns/Templating.html :: header}"></header> <main> <form action="/landmarkSub" id="landmarkSubmission" name="landmarkSubmission" method="post" th:object="${landmarkData}" onsubmit="return landmarkFormValidation()"> - <label>Business Name: + <label>Business Name: <input type="text" th:field="*{landmarkName}"> </label><br> + <div th:errors="*{landmarkName}" th:if="${#fields.hasErrors('landmarkName')}">ErrorLandmarkName</div> <label>Contact Address: <input type="text" th:field="*{landmarkEmail}"> </label><br> + <div th:errors="*{landmarkEmail}" th:if="${#fields.hasErrors('landmarkEmail')}">ErrorEmail</div> <label>Please Describe Your Business:<br> <textarea th:field="*{landmarkDescription}" rows="8" cols="60"></textarea> </label><br> <label>Your town/city: - <input type="text" th:field="*{landmarkName}"> + <input type="text" th:field="*{landmarkLocation}"> </label><br> <label>Trail: - <select th:field="*{trailID}"> <option value=0 disabled selected>Select Trail</option> <option value=1>Trail 1</option> <option value=2>Trail 2</option> <option value=3>Trail 3</option> </select> + + + + </div> </label><br> @@ -38,23 +44,31 @@ </main> <script> + + + + + function landmarkFormValidation(){ - console.log("sadasd"); var pass=true; - var description = (document.forms["landmarkSubmission"]["landmarkDescription"].value); - console.log(description); + var trail = document.forms["landmarkSubmission"]["trailID"].value + var description = document.forms["landmarkSubmission"]["landmarkDescription"].value; var descriptionWrdCount=description.split(" ").length - if(descriptionWrdCount>5){ - alert('Please keep your review to a maximum of 5 words.'); - console.log("BAD!!"); + if (descriptionWrdCount>300){ + alert('Please keep your review to a maximum of 300 words.'); pass = false; + } + if (trail==0){ + alert('Invalid trail selected. \nPlease select the trail you wish to join.'); + pass = false; } + return pass; } </script> - +<footer th:insert="~{/towns/Templating.html :: footer}"></footer> </body> </html> \ No newline at end of file diff --git a/src/main/resources/templates/towns/templates.server/Templating.html b/src/main/resources/templates/towns/Templating.html similarity index 100% rename from src/main/resources/templates/towns/templates.server/Templating.html rename to src/main/resources/templates/towns/Templating.html -- GitLab