orderForm Post
357
작성한 질문수 30
질문
1.orderForm을 Post로 보냈는데 왜 content type이 text/html 인가요?? application/x-www-form-urlencoded 아닌가요? 그리고 Form 데이터는 어디있나요 보이지 않습니다.
2.@RequestParam은 form형식의 데이터나 url형식으로 받아야하는데 어떻게 "memberId"처럼 필드값을 바로 받을 수 있나요?? 구글링을 해봐도 잘 안나옵니다. 혹시 키워드 가르쳐주시면 직접 찾아보겠습니다.
Controller
@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";
}
답변 2
1
안녕하세요. taeu kim님, 공식 서포터즈 David입니다.
Response Header가 아닌 Request Header를 봐주세요.
스프링 MVC 1편 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/unit/71220 을 참고해주세요.
감사합니다.
0
답변 감사합니다. 2번의 경우 강의가 없다고 가정하고 스스로 해결해보고 싶었습니다. 이러한 경우 구글링은 어떤 키워드로 해야하는지요?.
정말 많은 키워드로 삽질을 했지만 원하는 결과를 얻을 수 없었습니다.
추가적으로 링크를 통해 동영상을 보았지만 제 질문과는 다른 내용이었습니다. 직접 option의 값인 member.id가 아닌 select의 이름 memberId를 매개로 어떻게 Long memberId를 가져올 수 있는지 궁금합니다.
0
직접 option의 값인 member.id가 아닌 상위의 select의 이름 memberId를 매개로 어떻게 Long memberId를 가져올 수 있는지 궁금합니다.
기존에 RequestParam을 사용할 때
예를 들어
class A{
String name;
} 의 필드값을 받을 때
@RequestParam("name", name) 이런식으로 필드를 직접 참조해 값을 받아왔습니다.
하지만 위의 select 예제에서는
select option의 value인 member.id를 직접 참조하는 것이 아니라 select의 이름 memberId를 참조해
필드값을 받아오기때문에 이해가 되지 않습니다.
===추가===
<select name="memberId" id="member" class="form-control">
<option value="">회원선택</option>
<option th:each="member : ${members}"
th:value="${member.id}"
th:text="${member.name}" />
</select>
코드가 위처럼 되어있을 때 value의 member.id값을 가져오기위해서
@RequestParam("memberId" Long memberId) 가 맞나요
@RequestParam("member.id" Long memberId)가 맞나요?
0
질문 핵심은 폼(질문 내용에서는 select에서 선택된 값)에서 제출한 데이터를 RequestParam으로 어떻게 받느냐를 물으시는 것 같은데 맞을까요?
아니라면 다시 말씀해주세요.
먼저, 아래 강의를 봐주세요.
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/unit/71219
폼에서 제출할 때 요청과 함께 폼에서 제출한 데이터가 어떻게 가는지 아셔야 합니다.
urlencoded 방식과 post로 제출된다면 데이터는 다음과 같이 제출됩니다.
memberId="선택된 항목의 값"&memberName="david"
@RequestParam("memberId")는 1-i-a에서 memberId에 해당하는 값을 가져오게 됩니다.
즉, 폼에서 제출한 데이터를 RequestParam으로 받으려면 input 태그의 name 속성을 RequestParam의 name 속성의 값으로 입력해야 합니다.
<select name="memberId"> => RequestParam("memberId")
0
제 질문을 이해하신것같습니다. 답변이 되었습니다. 하지만 위의 링크 강의에는 관련 내용(Form 데이터가 넘겨지는 방식)이 나오지 않습니다. 2번 복습하고 동영상 보라고하셔서 오늘까지 총 3번이나 봤는걸요 ㅠㅠㅠ
select 태그에서는 key가 name이고 value가 memberId니까 @RequestParam("memberId")는 됩니다. 하지만 위의 예제에선 @RequestParam("memberName")으로 값을 가져올 수 없습니다. 이건 이유가 뭔가요? 답변자님께서 설명해주신걸로는 해결이 안됩니다.
== 결론 ==
form post로 보낼 때
name : value &name2: value2 이런식으로 보내지는 데 위 코드의 예제에선 아래와 같이 보내지네요.

따라서 memberName을 바로 가져올 순 없고 memberId를 키로 1이라는 value를 받아, member.getName()으로 찾아오면 되는 것같습니다.
상세한 답변 감사드립니다.
0
memberName은 예시였습니다. 오히려 이해하시는데 방해를 했네요.
FormData 오른쪽에 view souce를 선택하시면 memberId=1&itemId=2&count=1 이 나올겁니다.
위에 언급한 강의 내 @RequestParam과 Form Post 전송 둘 모두를 들으시면 더 잘 이해하실 수 있을 것 같습니다.
@RequestParam은 url 뒤에 오는 쿼리스트링과 body 내 데이터(여기서는 key=value 형태)를 모두 처리할 수 있습니다.
sdk 설정 오류
0
53
2
오탈자 - @Transactional
0
56
1
src/test/resources 테스트 경로 문제
0
50
1
상품 등록후 H2 db 출력 순서 바꿀 수 있나요?
0
64
1
MemberRepositoryTest 실행오류
0
81
1
boot 4.x >>> trasasction rolled back log & p6spy(영한님, 수업 자료 업데이트 해주시면 감사하겠습니다!!)
1
184
2
강의 마지막 QueryDSL 사용 부분 질문있습니다
1
142
2
클라이언트에서 isbn과 author 수정 요청을 한 경우에 대해 질문드립니다.
0
51
1
도메인 모델 패턴 vs 트랜잭션 스크립트 패턴
0
71
1
기본 생성자
0
60
1
h2 DB 연결시 jdbc url 변경 이유가 궁금합니다.
0
103
1
멤버서비스테스트 부분에서 막힙니다.
0
165
4
실무에서도 EntityManager를 이용해서 많이 작업하는 편일까요?
0
116
1
초반에 h2 다운로드 과정 꼭 필요한가요?
0
120
2
자신 필드에도 get으로 접근하는 이유가 있을까요?
0
114
1
24분 27초 연관관계 편의 메서드 위치
0
113
1
단건 주문만 가능하게 한건 의도한 부분이신가요?
0
109
2
빌드 툴, Gradle
0
59
1
h2연결은 된 것 같은데 엔티티 테이블까지 작성 후 확인해보아도 테이블이 안보입니다
0
77
2
Repository에서 EntityManager 주입 방식 차이
0
90
1
롬복과 사용자 정의 setter 메서드
0
73
1
주문 목록 조회 fetch join 질문드립니다
0
82
1
dirty checking 질문드립니다.
0
83
1
동시성 관련 질문입니다
0
75
1





