Property or filed '' cannot be found on null
여러가지 원인이 있지만 이곳에서는 두가지를 소개해 드릴게요.
CASE 1.
코드관리 게시판의 CRUD 를 다 구상하고 실행을 해보니 다음과 같이 화면 연결이 되지 않았으며, 두가지의 에러로그가 발생했습니다.
이는 thymeleaf 에서 html 자원을 찾지 못했다는 것인데, 아무리 찾아봐도 경로가 잘못된 부분은 존재하지 않았습니다.😭
보통 다음과 같은 경우 위와같은 에러가 발생합니다.
저는 저 경우에 해당하지 않아서 다음 에러 로그를 보았습니다.
뭔가 저 regDate 부분이 수상했어요.🤔
list.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!-- 생략 -->
<tr th:each="codeDetail : ${list}">
<td align="center" th:text="${codeDetail.groupCode}">${codeDetail.groupCode}</td>
<td align="center" th:text="${codeDetail.codeValue}">${codeDetail.codeValue}</td>
<td align="left">
<a href="read.html" th:href="|/codedetail/read?groupCode=${codeDetail.groupCode}&codeValue=${codeDetail.codeValue}|"
th:text="${codeDetail.codeName}">${codeDetail.codeName}</a>
</td>
<td align="center" th:text="${codeDetail.sortSeq}">${codeDetail.sortSeq}</td>
<td align="center" th:text="${#temporals.format(codeGroup.regDate, 'yyyy-MM-dd HH:mm')}">${codeGroup.regDate}</td>
</tr>
</table>
<!-- jQuery 자바스크립트 라이브러리 로딩 -->
<script src="/js/jQuery-2.1.4.min.js"></script>
<script th:inline="javascript">
var result = [[${msg}]];
<!-- 생략 -->
알고보니 codeGroup
이 Null
이여서 발생한 문제였습니다.
codeGroup 은 null 이 아닐때만 regDate 를 참조할 수 있기 때문입니다.
따라서 이를 해결하기 위해 if
를 의미하는 ?
를 넣어주었습니다. 그리고 해결되었습니다.
CASE 2.
재현님이 구상하신 내용을 토대로 작업을 하려는데 다음과 같은 에러가 발생했습니다.

1
EL1007E: Property or filed 'tlldx' cannot be found on null
이같은 에러는 db 에 데이터가 없는 경우에 발생합니다. 저의 경우는 TodoCard 에 대한 정보가 없어서 발생했습니다. 이를 해결하기 위한 방법은 두가지가 있습니다.
1. Controller 에서 해결하기
- 조회해온 데이터가 없는 경우 빈 객체를 선언해서 넘겨줍니다.
- 화면에서는 객체가 null 이 아니기 때문에 화면단 수정없이 해결 가능합니다.
2. Thymeleaf 에서 해결하기
- 컨트롤러를 수정하다가 왠지 잘못될것 같아 타임리프에서 해결해보려 했습니다.
- 조건에 null 이 아닌 경우만 조회하도록 조건을 걸거나,
?
operator 를 사용하면 됩니다. 저는 후자가 더 간편해서?
를 사용했습니다.1
<input type="checkbox" th:id="|gntodpvadd${todolist?.tlldx}|"/>
이런식으로 tlldx 를 불러와야하는 부분들에
?
을 써줬더니 에러가 해결되었습니다.
- 조건에 null 이 아닌 경우만 조회하도록 조건을 걸거나,
3. 도움받은 블로그
[Thymeleaf] Property or field ‘fqdn’ cannot be found on null 에러
This post is licensed under
CC BY 4.0
by the author.