[그린컴퓨터] Server/Spring

MVC 구조와 Thymeleaf 5. Thymeleaf { 반복문, 조건문, 블록, 삼항연산자, 예제 }

Ben의 프로그램 2023. 8. 2. 11:02
728x90
반복문
HTML 요소를 반복적으로 생성할 수도 있는데요. 리스트, 배열의 요소를 반복 처리할 수도 있습니다

th:each 속성을 사용하는데요. = 이후에는 자바에서 사용하는 람다식을 사용합니다. 여기서 목록에서 꺼내지는 변수를 사용할 수 있습니다. 

 

조건문
자바의 조건문과 타임리프는 약간 다른데요. 타임리프의 조건문은 if 조건문에 만족하는 경우와 만족하지 않는 경우를 unless 를 활용하여 따로 작성하여야 합니다. 

위와 같은 형태로 작성합니다. 

 

블록
<p> 혹은 <h1> 같은 HTML 요소없이 타임리프 속성을 사용할 수 있는 block 이라는 것이 있습니다. 

 

반복문 예제
우선 ex6 메서드를 컨트롤러에 추가해주었는데요. ex6 메서드에서는 model 에 리스트를 전달하여 그 리스트를 사용할 예정입니다. 

ex6.html 파일을 작성하였는데요. 한번 실행해보겠습니다. 

에러가 발생했는데요. 컴파일 오류가 나지 않고 런타임 오류가 나는 것을 보니까 HTML을 잘못 작성한 것 같은데요. 보니까 {dto}} 로 잘못 작성한 것을 볼 수 있습니다. 

실제로 동작을 시켜보니까 다음과 같은 화면을 볼 수 있습니다. 

이번에는 반복문의 반복 상태를 확인하는 html 을 작성해보았습니다. 콜론: 앞에 변수가 2개 dto, status 로 설정된 것을 볼 수 있는데요. 첫번째 변수 dto 는 반복문 안의 값을 저장하는 변수이고, 두번째 변수 status 는 반복 상태를 저장하는 변수입니다

서버를 동작시키고 화면을 출력해보니까 위와 같이 출력되는 것을 볼 수 있습니다. 여기서 재미있는 점은 index 는 0부터 시작하고 count 는 1부터 시작하고 있는 것을 볼 수 있습니다. 

 

블록 예제
ex6.html 파일에 블록태그 관련 태그들을 작성을 해주었는데요. 블록 태그는 HTML 태그에 종속되어서 타임리프 기능을 사용했었는데요. 블록 태그를 사용하면 HTML 태그에 종속되지 않은 채 타임리프를 사용할 수 있게 됩니다. 이 블록 태그의 장점은 반복처리를 우선 한 다음에 어떤 HTML 태그들을 반복할 것인지 정할 수 있도록 구조가 바뀌는 장점이 있습니다

실제로 코드를 동작시켜보면 위와 같이 반복되어 출력되는 것을 볼 수 있습니다. 

 

조건문 예제
조건문 예제인데요. 블록을 활용하여 반복문을 우선 사용하고 있는 것을 볼 수 있구요. 안에서 조건문을 사용하는데요. dto.no 가 2인 경우에만 스팬태그를 생성하는 것을 볼 수 있습니다. dto.no 가 아닌 경우에는 따로 스팬 태그를 생성하는 것을 볼 수 있습니다. 우선 unless 태그를 주석 처리하고 화면을 띄워보겠습니다.

조건을 만족하는 DTO 만 화면에 출력이 된 것을 확인할 수 있습니다. 이번에는 반대로 if 태그만 주석처리하고 화면을 띄워보겠습니다. 

이번에는 조건을 만족하지 않는 Span 2개가 생성이 된 것을 볼 수 있습니다.  

 

삼항연산자
ex6.html 파일에 위와 같이 코드를 작성했습니다. 우선 블록을 활용해서 반복문을 사용한 것을 볼 수 있고, 삼항연산자를 사용한 것을 볼 수 있는데요. 삼항 연산자는 다음과 같은 구조를 보입니다. 조건식? 결과1 : 결과2 이렇게 말이죠. 조건을 만족하는 경우와 만족하지 않는 경우를 모두 처리할 수 있는 장점이 있습니다.

조건을 만족하는 경우와 만족하지 않는 경우를 전부 다 처리해 준 것을 확인할 수 있습니다.