URL 링크
타임리프에서 URL을 생성할 때는 @{...}
을 사용하면 된다. 바로 예시 코드로 알아보자.
예시 코드
컨트롤러
@Controller
@RequestMapping("/basic")
public class BasicController {
@GetMapping("/link")
public String link(Model model) {
model.addAttribute("param1", "data1");
model.addAttribute("param2", "data2");
return "basic/link";
}
}
타임리프
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<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>
결과
-
basic url
-
hello query param
-
path variable
-
path variable + query param
예시 코드 설명
basic url
th:href="@{/hello}"
- 아주 기초적인 형태이다.
-
변환 결과
hello query param
th:href="@{/hello(param1=${param1}, param2=${param2})}"
- 소괄호 안에 작성된
param1=${param1}
과param2=${param2}
는/hello
url 뒤에 쿼리스트링으로 변환된다. -
변환 결과
path variable
th:href="@{/hello/{param1}/{param2}(param1=${param1}, param2=${param2})}"
- 스프링에서의
@PathVariable
애너테이션과 같은 기능을 지원한다. {param1}
,{param2}
자리에 소괄호 안에 작성된param1=${param1}
과param2=${param2}
의 값이 들어간다.- 이때,
param1=${param1}
과param2=${param2}
의 이름 부분 (param1
,param2
) 과 경로변수의 이름 ({param1}
,{param2}
)이 매핑되어 들어간다. -
변환 결과
path variable + query param
th:href="@{/hello/{param1}(param1=${param1}, param2=${param2})}"
- 경로변수와 쿼리스트링을 동시 사용하는 방법이다.
- 경로변수(
{param1}
)와 소괄호 안에 작성된 것들 중param2=${param2}
가 매핑되어 경로가 완성된다. - 나머지
param2=${param2}
는 완성된 URL 뒤에 붙어, 쿼리스트링이 된다. -
변환 결과
- 본 게시글은 김영한님의 강의를 토대로 정리한 글입니다.
- 더 자세한 내용을 알고 싶으신 분들이 계신다면, 해당 강의를 수강하시는 것을 추천드립니다.