• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

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

21.05.24 23:27 작성 조회수 640

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

안녕하세요. 오한별님

전체 프로젝트를 압축해서 zipkyh@naver.com으로 메일 보내주세요.

메일 보내실 때는 다음 사항을 꼭 지켜주세요.

1. 인프런 질문 링크를 걸어주세요.

2. 실행 방법을 알려주세요.

3. 어떻게 문제를 확인할 수 있는지 자세한 설명을 남겨주세요.

감사합니다.