diff --git a/build.gradle b/build.gradle index 9e86908..2211a07 100644 --- a/build.gradle +++ b/build.gradle @@ -26,6 +26,7 @@ repositories { dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' + implementation 'org.springframework.boot:spring-boot-starter-validation' developmentOnly 'org.springframework.boot:spring-boot-devtools' diff --git a/src/main/java/ru/lionarius/isdojplab/controller/HomeController.java b/src/main/java/ru/lionarius/isdojplab/controller/HomeController.java new file mode 100644 index 0000000..52dcaae --- /dev/null +++ b/src/main/java/ru/lionarius/isdojplab/controller/HomeController.java @@ -0,0 +1,15 @@ +package ru.lionarius.isdojplab.controller; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; + +@Controller +public class HomeController { + + @GetMapping("/") + public String home(Model model) { + model.addAttribute("message", "Добро пожаловать в магазин электротоваров!"); + return "home"; + } +} diff --git a/src/main/java/ru/lionarius/isdojplab/controller/ProductFormController.java b/src/main/java/ru/lionarius/isdojplab/controller/ProductFormController.java new file mode 100644 index 0000000..f853e7a --- /dev/null +++ b/src/main/java/ru/lionarius/isdojplab/controller/ProductFormController.java @@ -0,0 +1,29 @@ +package ru.lionarius.isdojplab.controller; + +import jakarta.validation.Valid; +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 ru.lionarius.isdojplab.model.Product; + +@Controller +public class ProductFormController { + + @GetMapping("/product_form") + public String showForm(Model model) { + model.addAttribute("product", new Product()); + return "product_form"; + } + + @PostMapping("/product_form") + public String submitForm(@Valid @ModelAttribute("product") Product product, BindingResult bindingResult, Model model) { + if (bindingResult.hasErrors()) { + return "product_form"; + } + model.addAttribute("message", "Товар успешно добавлен: " + product.getName()); + return "redirect:/"; + } +} diff --git a/src/main/java/ru/lionarius/isdojplab/model/Product.java b/src/main/java/ru/lionarius/isdojplab/model/Product.java new file mode 100644 index 0000000..9480205 --- /dev/null +++ b/src/main/java/ru/lionarius/isdojplab/model/Product.java @@ -0,0 +1,20 @@ +package ru.lionarius.isdojplab.model; + +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +public class Product { + + @NotBlank(message = "Название товара обязательно") + private String name; + + @NotNull(message = "Цена товара обязательна") + @Min(value = 1, message = "Цена должна быть больше 0") + private Double price; + + @NotBlank(message = "Описание товара обязательно") + private String description; +} diff --git a/src/main/resources/templates/home.html b/src/main/resources/templates/home.html new file mode 100644 index 0000000..65b374b --- /dev/null +++ b/src/main/resources/templates/home.html @@ -0,0 +1,10 @@ + + +
+ +