Property or field 'token' cannot be found on null - 타임리프 에러 / 스프링부트 게시판 만들기 중 오류트러블슈팅2023. 1. 6. 22:00
Table of Contents
728x90
728x90
에러문구
org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates//question/question_form.html]")
(...생략...)
Caused by: org.attoparser.ParseException: Exception evaluating SpringEL expression: "csrf.token" (template: "/question/question_form" - line 5, col 60)
(...생략...)
Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1007E: Property or field 'token' cannot be found on null
스프링부트, JPA를 이용해 게시판을 만들던 도중 해당 템플릿에서 에러가 발생했다.
csrf.token을 표현하는 도중 에러가 발생했고, token이 null이 아닐 경우에만 조회하게 수정해야했다.
<html layout:decorate="~{layout}">
<div layout:fragment="content" class="container">
<h5 class="my-3 border-bottom pb-2">질문등록</h5>
<form th:object="${questionForm}" method="post">
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}" />
<div th:replace="~{form_errors :: formErrorsFragment}"></div>
<div class="mb-3">
<label for="subject" class="form-label">제목</label>
<input type="text" th:field="*{subject}" class="form-control">
</div>
<div class="mb-3">
<label for="content" class="form-label">내용</label>
<textarea th:field="*{content}" class="form-control" rows="10"></textarea>
</div>
<input type="submit" value="저장하기" class="btn btn-primary my-2">
</form>
</div>
</html>
해결
th:value="${_csrf?.token}"
타임리프 구문중 th:value를 위의 코드로 수정했다.
?은 null이 발생할 수 있는 프로퍼티에 넣는다.
728x90
300x250
@mag1c :: 꾸준히 재밌게
2023.04 ~ 백엔드 개발자의 기록
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!