JAVA/소박한그룹 프로젝트

[Thymeleaf] 타임리프 Thymeleaf th:style, th:if 사용하기

kth990303 2021. 9. 14. 23:18
반응형

리액트가 익숙해지기 전까진, 타임리프를 이용하여 프론트를 대강 구현하는 중이다.

이번 시간엔 th:style, th:if를 이용한 템플릿 엔진 타임리프 사용법을 기록하겠다.

 

th:style

<form th:action="@{/post/enroll}" method="post">
    <table>
        <tr>
            <td><label>제목</label></td>
            <td><input th:style="${'width:500px'}" type="text" name="title" maxlength="200"></td>
        </tr>
        <tr>
            <td><label>내용</label></td>
            <td><input th:style="${'width:500px; height: 400px'}" type="text" name="contents"></td>
        </tr>
    </table>
    <input type="submit" value="등록">
</form>

게시판을 등록하는 코드이다.

th:style 을 이용할 때 ${} 안에 작은따옴표가 들어간다는 것과, 여러 가지일 경우 ;를 사이에 붙여주는 것을 잊지 말자.

width, height가 잘 적용됨을 확인할 수 있다.

th:if

<!DOCTYPE html>
<html lang="en">
<html xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
<head>
    <meta charset="UTF-8">
    <title th:value="${post.title}"></title>
    <link th:href="@{/css/index.css}" rel="stylesheet" />
</head>
<body>
<h3><a th:text="${post.title}">제목</a></h3>
작성자: <a th:text="${post.memberDto.name}">작성자</a>
<span th:style="${'text-align:right'}" th:if="${post.memberDto.name.equals(#authentication.getName())}">
    <a th:href="@{|/post/delete/${id}|}">삭제</a></span>
<hr>
<pre th:text="${post.contents}">내용</pre>
    <hr>
    <p>댓글 기능은 준비중입니다.</p>
</form>
</body>
</html>

sec는 스프링 시큐리티의 로그인 권한 부여여부 확인을 위해 사용된다.

th:if="" 안에 조건문을 넣어주면 된다. 참고로 이때, th:if는 <span> 안에 있어야 하며, th:href는 <a> 태그 안에 있어야 한다. 약속인 듯하다. 지켜주지 않으면 thymeleaf 문법이 작동하지 않는다.  {} 안에는 java 문법대로 사용하면된다.

 

위 코드는 현재 로그인 유저가 글 작성자라면, 삭제 기능이 보이게 해주는 코드이다.

 

한 번 실행을 해보자.

내 친구 아이디가 choisk0531이고, 글쓴이는 kth990303이다.
삭제 버튼이 뜨지 않는다.

다른 계정으로 들어왔을 땐, 삭제 버튼이 뜨지 않지만,

다시 내 계정인 kth990303으로 들어올 경우 아래와 같이 삭제 버튼이 뜬다.

이렇게 th:if 또한 잘 돌아감을 확인할 수 있다.

 

개인프로젝트를 하면서 느낀 점이, 백엔드 개발자여도 적절한 프론트 실력은 필요한 듯하다.

CSS를 개인적으로 많이 싫어하는데, 결국 공부를 할 수밖에 없는 듯하다.

반응형