inflearn logo
강의

講義

知識共有

本当! Spring BootとJPAの活用1 - Webアプリケーション開発

商品編集

썜. updateItemForm에는 action이 왜 없나요

748

rlqja910

投稿した質問数 9

0

@GetMapping("items/{itemId}/edit")
public String updateItemForm(@PathVariable("itemId") Long itemId, Model model) {
Book item = (Book) itemService.findOnd(itemId);


model.addAttribute("form", item);

return "items/updateItemForm";
}

수정버튼 눌렀을경우 바로 이렇게 item을 때려 박아서 정보를 줘도 되지않나요.

왜 폼에 넣고 폼을 전달하나요

아참. 이게 본 질문입니다.

action이 없어도 되는건가요? method는 있네요.

<!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"/>
<form th:object="${form}" method="post">
<!-- id -->
<input type="hidden" th:field="*{id}"/>
<div class="form-group">
<label th:for="name">상품명</label>
<input type="text" th:field="*{name}" class="form-control"
placeholder="이름을 입력하세요"/>
</div>
<div class="form-group">
<label th:for="price">가격</label>
<input type="number" th:field="*{price}" class="form-control"
placeholder="가격을 입력하세요"/>
</div>
<div class="form-group">
<label th:for="stockQuantity">수량</label> <input type="number" th:field="*{stockQuantity}"
class="formcontrol"
placeholder="수량을 입력하세요"/>
</div>
<div class="form-group">
<label th:for="author">저자</label>
<input type="text" th:field="*{author}" class="form-control"
placeholder="저자를 입력하세요"/>
</div>
<div class="form-group">
<label th:for="isbn">ISBN</label>
<input type="text" th:field="*{isbn}" class="form-control"
placeholder="ISBN을 입력하세요"/>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
<div th:replace="fragments/footer :: footer"/>
</div> <!-- /container -->
</body>
</html>

spring-boot java spring JPA 웹앱

回答 2

3

yh

안녕하세요. 윽이럴뚜가님^^

1. 맞습니다. item 엔티티를 그냥 넘겨도 상관없습니다. 그런데 실무에서는 form과 엔티티의 데이터가 딱 안맞는 경우가 많습니다. 예를 들어서 form에 추가 정보가 더 필요한데, item 엔티티와는 전혀 관계없는 데이터 일 수 있지요. 우리가 주문할 때 생각해보면 item만 출력하는게 아니라 약관 정보나 등등 다른 도메인의 여러 정보가 필요합니다. 그런데 간단한 경우에는 그렇게 item을 바로 출력해도 됩니다.

2. action을 생략한걸 들켰네요 ㅎㅎ

action을 생략하면 현재 URL을 그대로 사용합니다. 대신에! 전송방식이 GET에서 POST로 변경되었지요! 이게 중요합니다. 같은 URL인데, 수정 화면을 노출할 때는 GET을 사용하고, 수정 화면의 데이터를 실제 변경할 떄는 POST를 사용했다는 것입니다. 이런 방식이 좋은 URL 설계 방식입니다^^

도움이 되셨길 바래요.

2

rlqja910

와우 오마이갓김치 입니다.

역시 생략된것이었군요.

아. 딱딱 안맞는경우가 대부분이라고 하시니 따로 객체를 적당한 시점에 만드는 습관을 들여야겠군요. (다시 코드수정해야겠다.)

이제 파트2 결제하고 조지러 가겠습니다.

질문이 많아서 죄송합니다.

sdk 설정 오류

0

45

2

오탈자 - @Transactional

0

53

1

src/test/resources 테스트 경로 문제

0

49

1

상품 등록후 H2 db 출력 순서 바꿀 수 있나요?

0

62

1

MemberRepositoryTest 실행오류

0

74

1

boot 4.x >>> trasasction rolled back log & p6spy(영한님, 수업 자료 업데이트 해주시면 감사하겠습니다!!)

1

182

2

강의 마지막 QueryDSL 사용 부분 질문있습니다

1

137

2

클라이언트에서 isbn과 author 수정 요청을 한 경우에 대해 질문드립니다.

0

50

1

도메인 모델 패턴 vs 트랜잭션 스크립트 패턴

0

71

1

기본 생성자

0

59

1

h2 DB 연결시 jdbc url 변경 이유가 궁금합니다.

0

100

1

멤버서비스테스트 부분에서 막힙니다.

0

163

4

실무에서도 EntityManager를 이용해서 많이 작업하는 편일까요?

0

115

1

초반에 h2 다운로드 과정 꼭 필요한가요?

0

117

2

자신 필드에도 get으로 접근하는 이유가 있을까요?

0

110

1

24분 27초 연관관계 편의 메서드 위치

0

112

1

단건 주문만 가능하게 한건 의도한 부분이신가요?

0

106

2

빌드 툴, Gradle

0

57

1

h2연결은 된 것 같은데 엔티티 테이블까지 작성 후 확인해보아도 테이블이 안보입니다

0

73

2

Repository에서 EntityManager 주입 방식 차이

0

87

1

롬복과 사용자 정의 setter 메서드

0

70

1

주문 목록 조회 fetch join 질문드립니다

0

80

1

dirty checking 질문드립니다.

0

80

1

동시성 관련 질문입니다

0

72

1