본문 바로가기
개발아닌개발/springboot

[thymeleaf] 문자열 비교 조건문 (th:if, th:text)

by 불청객 2023. 7. 31.
반응형

Entity 에서는 아래와 같이 정의하여,  String으로 잘 저장되서 == 으로 비교하면 될줄알았던 나

@Enumerated(EnumType.STRING)

HTML에서 == 으로 비교조건문 확인하니 거짓으로만 나왔다.

참고로, th:switch , th:block 등 사용해봤지만 안됨.

 

String 말고 숫자로 DB 테이블 칼럼을 변경해야하나 고민하다가, 문자열 비교를 못하는게 문제같아서 방법을 찾았다.

 

 

해결

        <tbody>
        <tr th:each="book : ${bookList}" class="table-point">
        .
        .
        .
            <td th:if="${#strings.equals(book.borrow?.status,'APPLY')}">도서신청중</td>
        
<!--			시도한 내용-->
<!--            <td th:text="${book.borrow?.status eq 'APPLY'} ? ${book.borrow.status} : ''"></td>-->
<!--            <td th:text="${#strings.equals( ${book.borrow?.status},'APPLY')}? ${book.borrow.status} : ''"></td>-->
        </tr>
        </tbody>

borrow의 status가 APPLY일 경우, 도서신청중 이라고 표출하는 코드

 

- book.borrow? 는 borrow가 null일 경우, 코드를 수행하지 않도록 하기 위함 (NULL 오류 발생X)

- equals가 만족할경우 td 태그가 활성화됨→ book.borrow.status ==  'APPLY'

- 시도한 내용은 잘못된 코드라고 보면 됨.... 

 

 

 

참고

1. 문자열 조건문 비교

book의 title이 '홍길동전' 일 경우,

<td th:if="${#strings.equals(book.title, '홍길동전')}"> (내용) </td>

 

2. 문자열 비교하여 th:text 값 넣기

book의 title이 '홍길동전' 일 경우, 저자(author) 를 표시하기

- if가 참일경우, td 태그가 활성화됨

<td th:if="${#strings.equals(book.title,'홍길동전')}" th:text="${book.author}"></td>
728x90
반응형

댓글