인프런 커뮤니티 질문&답변

오한별님의 프로필 이미지

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

상품 주문

상품주문에서 에러가 발생합니다 ㅜ

작성

·

726

0

안녕하세요 ㅎㅎ

회원가입과 상품등록이후 상품 주문 버튼을 누른 후에 해당 값들 설정한 후에 submit을 누르면 에러가 발생합니다.

An error happened during template parsing (template: "class path resource [templates/order/orderList.html]

Caused by: org.attoparser.ParseException: Exception evaluating SpringEL expression: "item.orderItems[0].item.name" (template: "order/orderList" - line 42, col 21)

타임리프 파싱중에 에러가 발생한건데 타임리프 소스를 그대로 복붙을 해서 사용을 했는데 어느 부분이 문제일까요??

@GetMapping("/orders")
public String orderList(@ModelAttribute("orderSearch") OrderSearch orderSearch, Model model){
List<Order> orders = orderService.findOrders(orderSearch);
model.addAttribute("orders",orders);
return "order/orderList";
}

<tr th:each="item : ${orders}">
<td th:text="${item.id}"></td>
<td th:text="${item.member.name}"></td>
<td th:text="${item.orderItems[0].item.name}"></td>
<td th:text="${item.orderItems[0].orderPrice}"></td>
<td th:text="${item.orderItems[0].count}"></td>
<td th:text="${item.status}"></td>
<td th:text="${item.orderDate}"></td>
<td>
<a th:if="${item.status.name() == 'ORDER'}" href="#"
th:href="'javascript:cancel('+${item.id}+')'"
class="btn btn-danger">CANCEL</a>
</td>
</tr>

답변 2

1

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 한별님

확인해보니 orderItem이 DB에 저장되지 않았습니다.

그래서 다음 부분에서 데이터를 조회할 수 없어서 오류가 발생했습니다.

item.orderItems[0].item.name

다음을 참고해서 Order 객체에서 cascade 부분을 추가해주세요.

public class Order {

  ...

    @OneToMany(mappedBy = "order", cascade = CascadeType.ALL)

    private List<OrderItem> orderItems = new ArrayList<>();

}

감사합니다.

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 오한별님

 

전체 프로젝트를 압축해서 올려주세요.

감사합니다.