백엔드/Spring(Boot)
스프링 HTTP 요청 파라미터 - @ModelAttribute
김어찐
2021. 9. 9. 02:00
728x90
import hello.springmvc.basic.HelloData;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;
@Slf4j
@Controller
public class RequestParamController {
@ResponseBody
@RequestMapping("/model-attribute-v1")
// 요청 파라미터의 이름으로 HelloData 객체의 프로퍼티를 찾는다
// 파라미터 이름이 "username" 이면 setUsername() 메서드를 찾아서 호출하면서 값을 입력한다.
public String modelAttributeV1(@ModelAttribute HelloData helloData) {
log.info("helloData={}", helloData);
return "ok";
}
@ResponseBody
@RequestMapping("/model-attribute-v2")
// @ModelAttribute 삭제 가능
// 단순타입(String,int 등) 은 생략 가능
public String modelAttributeV2(HelloData helloData) {
log.info("helloData={}", helloData);
return "ok";
}
}
@PostMapping("/add")
public String addItemV2(@ModelAttribute("item") Item item,Model model){
itemRepository.save(item);
//@ModelAttribute 내부의 "item"이 자동으로 model.addAttribute 해준다 같은 이름으로 key,value
//model.addAttribute("item", item);
return "basic/item";
}
@PostMapping("/add")
public String addItemV4(Item item,Model model){
itemRepository.save(item);
// model에 자동으로 담김
// 이렇게까지 가능하지만 추천하지는 않음
//model.addAttribute("item", item);
return "basic/item";
}728x90