BackEnd/Thymeleaf

[Thymeleaf] URL 링크

샤아이인 2022. 1. 26.

인프런 김영한님의 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

댓글