-
thymeleaf에서 null check 하기(isEmpty)framework/Spring 2019. 5. 17. 10:23반응형
오늘의 미션, 만약 view 단에서 보여줘야 하는 데이터가 없으면(아마도 DB에서 삭제된 경우) 프론트단에 데이터를 보여주는 div 태그를 없애야 한다.
아 그야 식은 죽 먹기죠. data가 null인지 아닌지 판단해서 null이 아닐 때만 보여주면 되는거 아니겠습니까 아래 코드처럼요.
<div th:if = "${examData != null}"> ... <div>
그런데 문제가 하나 더 있네요. 만약 null 값이 아니라 빈 문자열이 들어온다면 어떻게 해야 하죠? 그럼 코드가 이런식이 되어야 할 것 같은데...
<div th:if = "${examData != ''}"> ... <div>
데이터가 null 일수도 있고 빈 문자열일 수도 있을 때도 있다면 조건문을 두 개 써야 겠군요. 그런데 그냥 컨트롤러에서 처리해서 넘겨준다면 조금 더 편할 것 같습니다.
if (examData.isEmpty()) { model.addAttribute("examData", "nothing"); } else { model.addAttribute("examData", examData); }
그리고 뷰에서는
<div th:if="${examData != 'nothing'}"> ... </div>
이렇게 받으면 되는데 솔직히 좀 마음에 들지는 않네요. 오히려 자바 코드가 다섯줄이나 늘어나 버렸으니, 사실 thymeleaf를 사용하고 있다면 아주 간단하게 해결할 수 있습니다.
<div th:if="${not #strings.isEmpty(examData)}"> ... </div>
isEmpty()를 사용하면 들어온 값이 null 이거나 빈 문자열일 때 true를 반환합니다. 체크를 하기 전에 trim() 메소드를 적용하기 때문에 빈 줄이나 공백도 같이 걸러진다는 것을 유의 해야 합니다.
#strings utility 에는 String 객체를 위한 method드 들이 존재 합니다. 다른 메소드 들은 여기서 확인할 수 있습니다.
반응형'framework > Spring' 카테고리의 다른 글
Thymeleaf 표현식 안에 표현식 쓰기 (0) 2019.05.24 Thymeleaf 간단 소개 (0) 2019.05.20 Thymeleaf 날짜 포맷 지정해서 출력하기 (0) 2019.05.13 Thymeleaf 에서 Enum 쓰기 (0) 2019.05.10 Spring in Action 요약 1. 스프링 속으로 (0) 2019.04.29