인프런 커뮤니티 질문&답변
상품주문에서 에러가 발생합니다 ㅜ
작성
·
815
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>
퀴즈
회원 가입 시 화면 입력 데이터를 엔티티 객체 대신 별도의 Form 객체로 받는 주된 이유는 무엇일까요?
데이터베이스 성능을 최적화하기 위해서
화면 종속적인 데이터나 유효성 검증 로직을 분리하기 위해서
JPA 영속성 컨텍스트와 직접적인 관계를 맺기 위해서
코드의 자동 생성 기능을 활용하기 위해서
답변 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





