1. 소개
이 짧은 사용방법(예제)에서는 Thymeleaf 를 사용하여 Spring 경로 변수를 사용하여 URL을 생성 하는 방법을 배웁니다 .
URL의 일부로 값을 전달하고자 할 때 경로 변수를 사용합니다. Spring 컨트롤러에서는 @PathVariable 어노테이션을 사용하여 이러한 값에 액세스합니다 .
2. 경로 변수 사용
먼저 간단한 Item 클래스를 만들어 예제를 설정하겠습니다 .
public class Item {
private int id;
private String name;
// Constructor and standard getters and setters
}
이제 컨트롤러를 만들어 보겠습니다.
@Controller
public class PathVariablesController {
@GetMapping("/pathvars")
public String start(Model model) {
List<Item> items = new ArrayList<Item>();
items.add(new Item(1, "First Item"));
items.add(new Item(2, "Second Item"));
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";
}
}
우리에 index.html을 템플릿, 우리의 항목을 통해의 루프를하자 호출 링크를 만들 singlePathVariable 방법 :
<div th:each="item : ${items}">
<a th:href="@{/pathvars/single/{id}(id = ${item.id})}">
<span th:text="${item.name}"></span>
</a>
</div>
방금 만든 코드는 다음과 같은 URL을 만듭니다.
http://localhost:8080/pathvars/single/1
이는 URL에서 표현식을 사용하기위한 표준 Thymeleaf 구문입니다.
연결을 사용하여 동일한 결과를 얻을 수도 있습니다.
<div th:each="item : ${items}">
<a th:href="@{'/pathvars/single/' + ${item.id}}">
<span th:text="${item.name}"></span>
</a>
</div>
3. 다중 경로 변수 사용
이제 Thymeleaf에서 경로 변수 URL을 생성하는 기본 사항을 다루었으므로 다중 사용을 빠르게 살펴 보겠습니다.
먼저 Detail 클래스를 만들고 Item 클래스를 수정 하여 List을 만들 것입니다.
public class Detail {
private int id;
private String description;
// constructor and standard getters and setters
}
다음 으로 Item 에 Detail List을 추가해 보겠습니다 .
private List<Detail> details;
이제 여러 @PathVariable 어노테이션을 사용하여 메서드를 추가하도록 컨트롤러를 업데이트하겠습니다 .
@GetMapping("/pathvars/item/{itemId}/detail/{dtlId}")
public String multiplePathVariable(@PathVariable("itemId") int itemId,
@PathVariable("dtlId") int dtlId, Model model) {
for (Item item : items) {
if (item.getId() == itemId) {
model.addAttribute("item", item);
for (Detail detail : item.getDetails()) {
if (detail.getId() == dtlId) {
model.addAttribute("detail", detail);
}
}
}
}
return "pathvariables/view";
}
마지막으로 index.html 템플릿을 수정 하여 각 세부 레코드에 대한 URL을 생성 해 보겠습니다.
<ul>
<li th:each="detail : ${item.details}">
<a th:href="@{/pathvars/item/{itemId}/detail/{dtlId}(itemId = ${item.id}, dtlId = ${dtl.id})}">
<span th:text="${detail.description}"></span>
</a>
</li>
</ul>
4. 결론
이 빠른 사용방법(예제)에서는 Thymeleaf를 사용하여 경로 변수가있는 URL을 만드는 방법을 배웠습니다. 우리는 하나만있는 간단한 URL을 만드는 것으로 시작했습니다. 나중에 여러 경로 변수를 사용하도록 예제를 확장했습니다.
- https://docs.spring.io/spring-framework/docs/current/reference/html
- https://www.baeldung.com/spring-thymeleaf-path-variables
'Java' 카테고리의 다른 글
Thymeleaf를 사용한 스프링 요청 매개 변수 (0) | 2021.04.05 |
---|---|
Thymeleaf는 유틸리티 개체를 나열합니다. (0) | 2021.04.05 |
Thymeleaf에서 배열 작업 (1) | 2021.04.05 |
Thymeleaf에서 부울 작업 (0) | 2021.04.05 |
Thymeleaf에서 사용자 정의 HTML 속성 작업 (0) | 2021.04.04 |