인프런 김영한님의 Spring강의에서 공부한것을 올리며, Thymeleaf의 경우 unit 단위로 공부후 각각 정리하는 글을 작성하겠습니다.
URL 링크
타임리프에서 URL을 생성할 때는 @{...} 문법을 사용하면 된다.
우선 간단한 컨트롤러부터 하나 만들어 봅시다!
@GetMapping("link")
public String link(Model model){
model.addAttribute("param1", "data1");
model.addAttribute("param2", "data2");
return "basic/link";
}
이를 처리할 뷰 또한 다음과 같습니다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>URL 링크</h1>
<ul>
<li><a th:href="@{/hello}">basic url</a></li>
<li><a th:href="@{/hello(param1=${param1}, param2=${param2})}">hello query param</a></li>
<li><a th:href="@{/hello/{param1}/{param2}(param1=${param1}, param2=${param2})}">path variable</a></li>
<li><a th:href="@{/hello/{param1}(param1=${param1}, param2=${param2})}">path variable + query parameter</a></li>
</ul>
</body>
</html>
실행 결과는 다음과 같습니다. 소스 보기로 살펴본 결과 입니다.
- 단순한 URL
단순하게 정적 URL만 추가하는 경우 @{/hello} 라고 추가하니 href="/hello" 가 추가된것을 확인할수 있다.
- 쿼리 파라미터
쿼리파라미터 추가를 위해 다음과 같이 코드를 작성하였습니다.
@{/hello(param1=${param1}, param2=${param2})}
() 괄호 안의 param1, param2는 쿼리 파라미터로 처리된것 입니다.
- 경로 변수
경로변수는 쿼리 파라미터와 비슷하게 ()괄호안에서 값을 적어주지만, {param1}과 {param2} 부분에 전달됩니다.
@{/hello/{param1}/{param2}(param1=${param1}, param2=${param2})}
위 코드의 실행결과 /hello/data1/data2 의 URL이 생성됩니다.
- 경로변수 + 쿼리 파라미터
다음과 같이 쿼리파라미터 와 경로 변수를 동시에 추가해줄수 있습니다. 모두 ()괄호 안에 추가해 줍니다.
@{/hello/{param1}(param1=${param1}, param2=${param2})}
위와 같은 경우 param1은 {param1}에 전달되어 경로 변수가 되고, param2는 쿼리 파라미터가 됩니다.
'BackEnd > Thymeleaf' 카테고리의 다른 글
[Thymeleaf] 연산 (0) | 2022.01.26 |
---|---|
[Thymeleaf] Literals (0) | 2022.01.26 |
[Thymeleaf] 유틸리티 객체와 날짜 (0) | 2022.01.26 |
[Thymeleaf] 기본 객체들 (0) | 2022.01.26 |
[Thymeleaf] SpringEL, 지역변수 (0) | 2022.01.26 |
댓글