[오류]
주문를 할 경우 아래와 같은 오류로 화면이 랜딩되지 않는 오류 발생

아래 더 오류를 보니 주문상태 값을 가져오지 못해 발생한 것을 알 수있었다
Caused by: org.attoparser.ParseException: Exception evaluating SpringEL expression: "T(jpabook.jpashop.domain.OrderStatus).values()" (template: "order/orderList" - line 16, col 33)
at org.attoparser.MarkupParser.parseDocument(MarkupParser.java:393)
at org.attoparser.MarkupParser.parse(MarkupParser.java:257)
at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:230)
... 48 more
[오류 원인]
강의에서 html 부분은 복붙하여 사용하여 그대로 나도 복붙해서 사용했는데 경로가 달라서 발생하는 문제였다
복붙을 하더라도 한 번 확인했어야 하는 부분인데 시간을 너무 많이 잡아 먹었다.
여기서 사용한 T연산자는 Thymeleaf의 표현식인데 이렇게 풀경로를 적어서 왜 values() 메소드를 호출했는지 모르겠다.
그래서 T연산자를 사용하지 않고 불러오도록 수정하려고 한다.

[코드 수정]
1.컨트롤러에서 모델에 Enum 값 추가
먼저, OrderController 컨트롤러에서 OrderStatus enum의 values() 메소드를 호출하여 모든 enum 값을 가져온 후, 이를 orderList.html 뷰로 전달하기 위해 모델에 추가
model.addAttribute("orderStatuses", OrderStatus.values());

2. 컨트롤러에서 모델에 추가된 orderStatuses를 Thymeleaf 템플릿에서 사용하여 옵션을 생성
T연산자사용한 부분을 지우고 아래와 같이 수정해주었다
<option th:each=
"status : ${T(jpabook.jpashop2.domain.OrderStatus).values()}"
수정 전
status : ${orderStatuses}
수정 후
3. 정상작동
'SpringBoot > 프로젝트' 카테고리의 다른 글
[오류] org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [...]") 에러상황 (2) | 2024.01.04 |
---|---|
[오류해결]@RequiredArgsConstructor 를 사용할때 주의점 (0) | 2023.12.21 |
Environment properties 적용 (2) | 2023.12.06 |
자동 구성 정보 대체하기 (0) | 2023.11.30 |
@Conditional 학습 테스트 (0) | 2023.11.30 |