본문 바로가기

개발/Thymeleaf

[Thymeleaf] Property or field 'fqdn' cannot be found on null 에러

반응형

- 나의 상황 

 : controller 에서 entity 를 조회해서 값 내려주던걸 vo로 변환하여 내려주는 걸로 변경하는 중 만난 에러.. db에 데이터가 없는 경우에만 에러 발생.

- 에러 발생 위치

<input type="text" th:value="${sysInfo.fqdn}" name="fqdn"/>

- 원인 

: sysInfo 객체가 null 이어서 sysInfo.fqdn 을 조회할 수 없어서 발생하는 에러.

- 해결 방법

1. controller 에서 해결 : 조회해온 데이터가 없는 경우 빈 객체를 선언해서 넘겨준다. 이러면 화면에서는 객체가 null 이 아니니까 thymeleaf 수정 없이 해결 가능.

//controller
SysInfo sysInfo = sysService.getSysInfo();
if(sysInfo != null){
	model.addAttribute("sysInfo", sysInfo);
}else{
	model.addAttribute("sysInfo", new SysInfo());
}

 

2. thymeleaf 에서 해결

1. 조건에 null 이 아닌 경우만 조회하도록.
<input type="text" th:value="${sysInfo != null ? sysInfo.fqdn : null}" name="fqdn"/>

2. '?' operator 사용. ?를 사용하면 null 이 아닌 경우에만 해당 값을 조회해옴
<input type="text" th:value="${sysInfo?.fqdn}" name="fqdn"/>

 

반응형