[Spring Boot] org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression

MEUN·2021년 12월 11일
0
post-thumbnail

🔒 상황

Spring BootThymeleaf를 사용하여 View를 구현하던 중 아래와 같이 오류가 발생하였다.

500

org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression: "{expression}" (template: "{file}.html" - line 48, col 17)
at org.thymeleaf.spring5.expression.SPELVariableExpressionEvaluator.evaluate(SPELVariableExpressionEvaluator.java:292) ~[thymeleaf-spring5-3.0.12.RELEASE.jar:3.0.12.RELEASE]
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Error has been observed at the following site(s):
| checkpoint ⇢ Handler com.meun.hackingspringboot.reactive.HomeController#home() [DispatcherHandler]
|
checkpoint ⇢ org.springframework.boot.web.reactive.filter.OrderedHiddenHttpMethodFilter [DefaultWebFilterChain]
|_ checkpoint ⇢ HTTP GET "/" [ExceptionHandlingWebHandler]


🔑 해결 방법

  • Stack Trace를 읽던 중 아래 내용을 발견하였는데, HTML 내 조회하려던 값에 대하여 해당 멤버변수에 대하여 Getter/Setter가 작성되어 있지 않았고 작성한 이후 정상 동작함을 확인하였다.

    Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1008E: Property or field '{멤버 변수}' cannot be found on object of type '{패키지명}.{클래스명}' - maybe not public or not valid?
    at org.springframework.expression.spel.ast.PropertyOrFieldReference.readProperty(PropertyOrFieldReference.java:217) ~[spring-expression-5.3.3.jar:5.3.3]
    at org.springframework.expression.spel.ast.PropertyOrFieldReference.getValueInternal(PropertyOrFieldReference.java:104) ~[spring-expression-5.3.3.jar:5.3.3]
    at org.springframework.expression.spel.ast.PropertyOrFieldReference.access000(PropertyOrFieldReference.java:51) [springexpression5.3.3.jar:5.3.3]atorg.springframework.expression.spel.ast.PropertyOrFieldReference000(PropertyOrFieldReference.java:51) ~[spring-expression-5.3.3.jar:5.3.3] at org.springframework.expression.spel.ast.PropertyOrFieldReferenceAccessorLValue.getValue(PropertyOrFieldReference.java:406) ~[spring-expression-5.3.3.jar:5.3.3]

  • IDE를 통해서 Getter/Setter, equals(), hashCode() 등을 자동 생성하였는데 해당 멤버변수만 Getter/Setter 생성을 누락했던 것 같다.
  • 오류를 예방하기 위해서는 Lombok@Getter, @Setter Annotation을 활용하도록 노력해야겠다.

📕 느낀 점

  • 항상 오류의 원인은 작은 실수에서 비롯되는 것 같다고 생각하였다.

1개의 댓글

comment-user-thumbnail
2022년 4월 11일

ㅜㅜㅜㅜ 진짜 진짜 감사해요 이 문제때문에 3일을 고생했는데 이거때문일 줄이야 ㅜㅜㅜ

답글 달기