작성
·
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