Develop

[Thymeleaf 타임리프] 구분자를 기준으로 배열만들기 setSplit 사용방법

issuemaker99 2024. 10. 8. 10:24
728x90

1. split() 함수란?

split() 함수는 주어진 문자열을 특정 구분자를 기준으로 분리하고, 그 결과를 배열로 반환하는 함수입니다. 예를 들어, "apple,banana,orange"라는 문자열을 쉼표(,)로 분리하면, ["apple", "banana", "orange"]라는 배열을 얻게 됩니다.

2. 예제 시나리오

이번 예제에서는 "Spring,Security,Thymeleaf"라는 문자열을 쉼표로 분리한 후, 그 결과를 화면에 출력하는 방법을 구현해 보겠습니다.

3. 프로젝트 설정

Spring Boot 프로젝트에서 Thymeleaf를 사용할 수 있도록 spring-boot-starter-thymeleaf 의존성을 추가해야 합니다.

build.gradle (또는 pom.xml)

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.boot:spring-boot-starter-web'
}

 

4. 컨트롤러 설정

먼저 문자열 데이터를 Thymeleaf 템플릿으로 전달하는 간단한 컨트롤러를 만듭니다.

StringController.java

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class StringController {

    @GetMapping("/split-example")
    public String splitExample(Model model) {
        String technologies = "Spring,Security,Thymeleaf";
        model.addAttribute("technologies", technologies);
        return "splitExample";
    }
}

 

이 컨트롤러는 "/split-example" 경로로 접근했을 때 "Spring,Security,Thymeleaf"라는 문자열을 모델에 추가한 후, splitExample.html 템플릿을 반환합니다.

5. Thymeleaf 템플릿 작성

이제 split() 함수를 사용하여 문자열을 분리하고 화면에 출력하는 Thymeleaf 템플릿을 작성하겠습니다.

splitExample.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Thymeleaf Split Example</title>
</head>
<body>

<h1>Split Example</h1>

<p>Original String: <span th:text="${technologies}"></span></p>
<!-- 반복문 예시 -->
<ul>
    <li th:each="tech : ${#strings.setSplit(technologies, ',')}">
        <span th:text="${tech}"></span>
    </li>
</ul>
<!-- 단일건 예시 -->
<ul>
    <li>
        <span th:text="${#strings.setSplit(technologies, ',')[0]}"></span>
    </li>
    <li>
        <span th:text="${#strings.setSplit(technologies, ',')[1]}"></span>
    </li>
</ul>

</body>
</html>

 

설명:

  1. <span th:text="${technologies}"></span>: 모델에서 전달받은 technologies 문자열을 그대로 출력합니다.
  2. <ul> 태그 내부의 th:each는 Thymeleaf의 반복문입니다. #strings.setSplit(technologies, ',')를 사용하여 쉼표로 문자열을 분리한 배열을 순회합니다.
  3. 각각의 분리된 문자열(tech)을 리스트 항목으로 출력합니다.

6. 실행 결과

프로젝트를 실행하고 브라우저에서 /split-example 경로로 이동하면 다음과 같은 결과를 볼 수 있습니다.

결과 화면:

Split Example

Original String: Spring,Security,Thymeleaf

- Spring
- Security
- Thymeleaf

 

위와 같이 "Spring,Security,Thymeleaf" 문자열이 각각 "Spring", "Security", "Thymeleaf"로 나뉘어 화면에 출력됩니다.

7. 확장: 문자열 분리 후 추가 처리

split() 함수로 분리된 문자열에 대해 추가적인 처리가 필요할 수도 있습니다. 예를 들어, 공백을 제거하거나 대소문자를 변환하는 등의 작업을 할 수 있습니다. 아래는 각 분리된 문자열에 공백을 제거하고 대문자로 변환하는 예제입니다.

splitExample.html 수정

<ul>
    <li th:each="tech : ${#strings.setSplit(technologies, ',')}">
        <span th:text="${#strings.toUpperCase(#strings.trim(tech))}"></span>
    </li>
</ul>

 

설명:

  • #strings.trim(tech): 각 분리된 문자열의 앞뒤 공백을 제거합니다.
  • #strings.toUpperCase(tech): 문자열을 대문자로 변환합니다.

 

Thymeleaf의 split() 함수는 문자열을 구분자로 분리하고, 분리된 값을 반복하여 화면에 출력하는 데 유용합니다. 이를 통해 문자열을 더 세밀하게 다루거나 필요한 경우 추가 처리를 할 수 있습니다.

 

LIST