주문내역 @GetMapping Parsing error 관련 질문 드립니다
회원 등록 -> 상품 등록 -> 주문하기 에서 주문 완료시 에러가 발생합니다
에러 메시지는 html 파싱 에러 라고 나오는데, 경로는 이상이 없는것 같아서 질문 드려봅니다
OrderController
@Controller
@RequiredArgsConstructor
public class OrderController {
private final OrderService orderService;
private final MemberService memberService;
private final ItemService itemService;
@GetMapping("/order")
public String createForm(Model model) {
List<Member> members = memberService.findMembers();
List<Item> items = itemService.findItem();
model.addAttribute("members", members);
model.addAttribute("items", items);
return "order/orderForm";
}
@PostMapping("/order")
public String order(@RequestParam("memberId") Long memberId, @RequestParam("itemId") Long itemId,
@RequestParam("count") int count) {
orderService.order(memberId, itemId, count);
return "redirect:/orders";
}
@GetMapping("/orders")
public String orderList(@ModelAttribute("orderSearch") OrderSearch orderSearch, Model model) {
List<Order> orders = orderService.findOrders(orderSearch);
model.addAttribute("orders", orders);
return "order/orderList";
}
}
`html 경로`

콘솔 에러 메시지
rg.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/order/orderList.html]")
at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:241) ~[thymeleaf-3.0.15.RELEASE.jar:3.0.15.RELEASE]
at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parseStandalone(AbstractMarkupTemplateParser.java:100) ~[thymeleaf-3.0.15.RELEASE.jar:3.0.15.RELEASE]
at org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:666) ~[thymeleaf-3.0.15.RELEASE.jar:3.0.15.RELEASE]
at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1098) ~[thymeleaf-3.0.15.RELEASE.jar:3.0.15.RELEASE]
at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1072) ~[thymeleaf-3.0.15.RELEASE.jar:3.0.15.RELEASE]브라우져 에러 메시지

回答 6
3
안녕하세요. sy k님, 공식 서포터즈 OMG입니다.
.
해당 상황은 경험 상 두 가지 중 하나였던 것 같습니다.
1.타임리프 문법 태그 중간에 코드가 줄내림이 되어 파싱에러가 발생하는 경우
<p:th =~
~></p>
=> orderList.html의 여는 태그 닫는태그 쌍이 두 줄로 줄내림되어 있는 경우 한줄로 변경해주세요
ex) 모든 각 태그를 한줄로 <p></p>
2.application.yml에 open session in view 설정이 false로 되어 있는 경우.
두 가지 상황을 확인해주세요 ^^
확인해보시고 결과를 공유해주세요 :)
.
감사합니다.
0
orderList.html 줄내림은 없는것 샅습니다.
두 번재로 open session in view 관련 코드가 yml 파일에 들어 있어야 하는걸까요? 현재 이런 코드는 없습니다
application.yml
spring:
datasource:
url: jdbc:h2:tcp://localhost/~/jpashop
username: sa
password:
driver-class-name: org.h2.Driver
jpa:
hibernate:
ddl-auto: create
properties:
hibernate:
# show_sql: true
format_sql: true
logging:
level:
org.hibernate.SQL: debug
org.hibernate.type: trace
orderList.html
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head th:replace="fragments/header :: header"/>
<body>
<div class="container">
<div th:replace="fragments/bodyHeader :: bodyHeader"/>
<div>
<div>
<form th:object="${orderSearch}" class="form-inline">
<div class="form-group mb-2">
<input type="text" th:field="*{memberName}" class="form- control" placeholder="회원명"/>
</div>
<div class="form-group mx-sm-1 mb-2">
<select th:field="*{orderStatus}" class="form-control">
<option value="">주문상태</option>
<option th:each="status : ${T(jpabook.jpashop.domain.OrderStatus).values()}"
th:value="${status}"
th:text="${status}">option
</option>
</select>
</div>
<button type="submit" class="btn btn-primary mb-2">검색</button>
</form>
</div>
<table class="table table-striped">
<thead>
<tr>
<th>#</th>
<th>회원명</th>
<th>대표상품 이름</th>
<th>대표상품 주문가격</th>
<th>대표상품 주문수량</th>
<th>상태</th>
<th>일시</th>
<th></th>
</tr>
</thead>
<tbody>
<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>
</tbody>
</table>
</div>
<div th:replace="fragments/footer :: footer"/>
</div> <!-- /container -->
</body>
<script>
function cancel(id) {
var form = document.createElement("form");
form.setAttribute("method", "post");
form.setAttribute("action", "/orders/" + id + "/cancel");
document.body.appendChild(form);
form.submit();
}
</script>
</html>
2
안녕하세요. sy k님, 공식 서포터즈 OMG입니다.
src>main>java>com>jpabook
패키지 구조로 인한 문제입니다.
jpabook패키지를 java패키지 하위로 이동시키면 해결됩니다.
감사합니다.
2
안녕하세요. 저도 똑같이 orderList.html, 500번, ParseException 문제로 머리를 박다가 해결하게 되어서, 혹시 도움이 될까 올립니다. 저같은 경우 강사님이 올려주신 소스 자료 패키지 구조와 제 것이 달라서 생기는 문제였습니다...
[orderList.html]
<option th:each="status : ${T(jin.jpa.domain.OrderStatus).values()}"본인 패키지에 누락이 된 폴더가 없는지 확인하시고 바꾸시면 될 것 같습니다. 도움이 됬으면 좋겠습니다.
1
안녕하세요. sy k님, 공식 서포터즈 OMG입니다.
프로젝트 코드를 확인해봐야 알 것 같습니다.
전체 프로젝트를 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.
구글 드라이브 업로드 방법은 다음을 참고해주세요.
구글 드라이브 업로드 방법 링크
주의: 업로드시 권한 문제 꼭 확인해주세요
추가로 다음 내용도 코멘트 부탁드립니다.
1. 실행 방법을 알려주세요.
2. 어떻게 문제를 확인할 수 있는지 자세한 설명을 남겨주세요.
감사합니다.
0
https://drive.google.com/drive/folders/1ReP0Ohc9F-I3G8bDOWndD87mYeiUV97l?usp=sharing
[오류 확인]
db(H2)에 연결 후 1. 회원 등록 -> 2. 상품 등록 * -> 3.상품 주문상품 주문 후 리다이렉트 화면에서 에러가 발생합니다.
0
안녕하세요, sy k 님! 공식 서포터즈 codesweaver 입니다.
타임리프 파싱 에러로 보이는데요,
orderList.html 상에 타임리프 문법 오류가 있는것 같습니다.
orderList.html 파일 내용을 올려주시거나 한번 다시 검토해 주시기 바랍니다.
감사합니다.
sdk 설정 오류
0
49
2
오탈자 - @Transactional
0
55
1
src/test/resources 테스트 경로 문제
0
50
1
상품 등록후 H2 db 출력 순서 바꿀 수 있나요?
0
63
1
MemberRepositoryTest 실행오류
0
81
1
boot 4.x >>> trasasction rolled back log & p6spy(영한님, 수업 자료 업데이트 해주시면 감사하겠습니다!!)
1
183
2
강의 마지막 QueryDSL 사용 부분 질문있습니다
1
137
2
클라이언트에서 isbn과 author 수정 요청을 한 경우에 대해 질문드립니다.
0
51
1
도메인 모델 패턴 vs 트랜잭션 스크립트 패턴
0
71
1
기본 생성자
0
60
1
h2 DB 연결시 jdbc url 변경 이유가 궁금합니다.
0
100
1
멤버서비스테스트 부분에서 막힙니다.
0
164
4
실무에서도 EntityManager를 이용해서 많이 작업하는 편일까요?
0
116
1
초반에 h2 다운로드 과정 꼭 필요한가요?
0
118
2
자신 필드에도 get으로 접근하는 이유가 있을까요?
0
112
1
24분 27초 연관관계 편의 메서드 위치
0
113
1
단건 주문만 가능하게 한건 의도한 부분이신가요?
0
108
2
빌드 툴, Gradle
0
59
1
h2연결은 된 것 같은데 엔티티 테이블까지 작성 후 확인해보아도 테이블이 안보입니다
0
76
2
Repository에서 EntityManager 주입 방식 차이
0
88
1
롬복과 사용자 정의 setter 메서드
0
71
1
주문 목록 조회 fetch join 질문드립니다
0
81
1
dirty checking 질문드립니다.
0
81
1
동시성 관련 질문입니다
0
74
1

