diff --git a/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/pathvariables/Detail.java b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/pathvariables/Detail.java new file mode 100644 index 0000000000..e9a95f133c --- /dev/null +++ b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/pathvariables/Detail.java @@ -0,0 +1,28 @@ +package com.baeldung.thymeleaf.pathvariables; + +public class Detail { + private int id; + private String description; + + public Detail(int id, String description) { + super(); + this.id = id; + this.description = description; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } +} diff --git a/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/pathvariables/Item.java b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/pathvariables/Item.java new file mode 100644 index 0000000000..173c107846 --- /dev/null +++ b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/pathvariables/Item.java @@ -0,0 +1,39 @@ +package com.baeldung.thymeleaf.pathvariables; + +import java.util.List; + +public class Item { + private int id; + private String name; + private List details; + + public Item(int id, String name) { + super(); + this.id = id; + this.name = name; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public List getDetails() { + return details; + } + + public void setDetails(List details) { + this.details = details; + } +} diff --git a/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/pathvariables/PathVariablesController.java b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/pathvariables/PathVariablesController.java new file mode 100644 index 0000000000..fde8bf1533 --- /dev/null +++ b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/pathvariables/PathVariablesController.java @@ -0,0 +1,62 @@ +package com.baeldung.thymeleaf.pathvariables; + +import java.util.ArrayList; +import java.util.List; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; + +@Controller +public class PathVariablesController { + private List items = new ArrayList(); + + public PathVariablesController() { + Item item1 = new Item(1, "First Item"); + List item1Details = new ArrayList<>(); + item1Details.add(new Detail(1, "Green")); + item1Details.add(new Detail(2, "Large")); + item1.setDetails(item1Details); + items.add(item1); + + Item item2 = new Item(2, "Second Item"); + List item2Details = new ArrayList<>(); + item2Details.add(new Detail(1, "Red")); + item2Details.add(new Detail(2, "Medium")); + item2.setDetails(item2Details); + items.add(item2); + } + + @GetMapping("/pathvars") + public String start(Model model) { + model.addAttribute("items", items); + return "pathvariables/index"; + } + + @GetMapping("/pathvars/single/{id}") + public String singlePathVariable(@PathVariable("id") int id, Model model) { + if (id == 1) { + model.addAttribute("item", new Item(1, "First Item")); + } else { + model.addAttribute("item", new Item(2, "Second Item")); + } + + return "pathvariables/view"; + } + + @GetMapping("/pathvars/item/{itemId}/detail/{detailId}") + public String multiplePathVariable(@PathVariable("itemId") int itemId, @PathVariable("detailId") int detailId, Model model) { + for (Item item : items) { + if (item.getId() == itemId) { + model.addAttribute("item", item); + for (Detail detail : item.getDetails()) { + if (detail.getId() == detailId) { + model.addAttribute("detail", detail); + } + } + } + } + return "pathvariables/view"; + } +} diff --git a/spring-thymeleaf-2/src/main/resources/templates/pathvariables/index.html b/spring-thymeleaf-2/src/main/resources/templates/pathvariables/index.html new file mode 100644 index 0000000000..a3e34dcba1 --- /dev/null +++ b/spring-thymeleaf-2/src/main/resources/templates/pathvariables/index.html @@ -0,0 +1,22 @@ + + + + +PathVariables in Thymeleaf + + +

Items

+
+ + + + +
+ + \ No newline at end of file diff --git a/spring-thymeleaf-2/src/main/resources/templates/pathvariables/view.html b/spring-thymeleaf-2/src/main/resources/templates/pathvariables/view.html new file mode 100644 index 0000000000..f635c1113c --- /dev/null +++ b/spring-thymeleaf-2/src/main/resources/templates/pathvariables/view.html @@ -0,0 +1,19 @@ + + + + +Pathvariables in Thymeleaf + + +

View Item

+
+ + +
+

Detail

+
+ + +
+ + \ No newline at end of file