묻고 답해요
131만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Query Parameter 방식에서의 ArgumentResolver 동작 원리에 대해
localhost.com:8080/hello?username=kim&age=20위와 같은 get 방식의 요청이 들어왔을 때,@GetMapping("/hello") public void foo(HelloData helloData) { }제가 이해한 내용을 바탕으로 설명해보겠습니다.컨트롤러에게 HelloData 객체를 만들어 전달해주는 것은 ArgumentResolver 입니다. 만일 HTTP 메시지를 통해 username과 age가 전달되었다면, HelloData 객체를 만들기 위해 HTTP 메시지 컨버터를 사용하였을 것입니다.마찬가지로 Query Parameter 방식으로 값이 전달되었을 때, HelloData 객체를 만드는 주체도 ArgumentResolver 인가요? 이 때는 HTTP 메시지 컨버터를 이용하는 것이 아니라 프로퍼티(constructor, setter)를 찾고, 그것으로 객체를 만드는 것인가요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
로그인 시 GetMapping에 @ModelAttribute를 넣어주는이유
안녕하세요 로그인 기능 작성할 때 GetMapping에서도 ModelAttribute를 넣어주는 이유가 혹시 thymeleaf작성시 th:object=${loginForm}을 넣어주기 위해서 작성하는건가요..?? 이 부분이 궁금하여 질문드립니다. 감사합니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
ModelAttribute 질문있습니다.
View 와 Controller 사이에서 ModelAttribute 로 데이터를 주고 받는 부분에 질문이 있습니다. VIew 에는 아래와 같이 Input 들어 있는 예제가 있습니다. <div> <label for="itemName">상품명</label> <input type="text" id="itemName" name="itemName" class="form-control" value="상품A" th:value="${item.itemName}" readonly></div><div> <label for="price">가격</label> <input type="text" id="price" name="price" class="form-control" value="10000" th:value="${item.price}" readonly></div><div> <label for="quantity">수량</label> <input type="text" id="quantity" name="quantity" class="form-control" value="10" th:value="${item.quantity}" readonly></div> submit 이 트리거가 되면 아래 action 이 수행이 됩니다. <form action="item.html" th:action="@{/basic/items/add}" method="post"> 그렇게 되면 Controller 에서 다음과 같이 파라미터를 ModelAttribute 로 받을수 있다고 배웠습니다. public String addItemV3(@ModelAttribute Item item) { itemRepository.save(item); return "basic/item";} 여기서 질문이 있습니다. 사실상 어떤 객체든 필드명만 같다면 꼭 Item 이 아니어도사용이 가능한걸로 알고 있는데 1. 이것도 메세지 컨버터가 필드 이름만 보고 setter 를 이용해 데이터를 알아서 넣어준다고 생각하면 될까요? 즉 어떤 객체든 상관없이 필드에 itemName, price, quantity 만 있으면 문제가 없는거죠?
-
미해결예제로 배우는 스프링부트 입문
(09) Validator 사용하기 @ModelAttribute("dto") 가 사용된 이유?
MyController.java 의 insert2 메소드에서 인자 값에 @ModelAttribute("dto") 가 사용된 이유가 부족한 것 같습니다.