spring 파라미터 바인딩 질문
조회수 2955회
@RequestMapping(value="/read", method = RequestMethod.GET)
public void read(Model model,@RequestParam("bno") int bno)throws Exception{
logger.info("read호출");
model.addAttribute(service.read(bno));
}
@RequestMapping(value="/modify", method = RequestMethod.GET)
public void updateGET(Model model, int bno)throws Exception{
logger.info("modify페이지 호출");
model.addAttribute(service.read(bno));
}
@RequestMapping(value="/modify", method = RequestMethod.POST)
public String updatePOST(Model model, BoardVO vo)throws Exception{
logger.info("modify기능 실행");
service.update(vo);
return "redirect:/board/listAll";
}
@RequestMapping(value="/read", method = RequestMethod.GET)
public void read(@RequestParam("bno") int bno,
@ModelAttribute("cri")Criteria cri,
Model model)
throws Exception{
model.addAttribute(service.read(bno));
}
게시판 crud연습중입니다 사용자가 보낸데이터를 서버에서 받아서 데이터 자료형에 맞게 변환해주어야 하는데 책을 보니 어떤건 @RequestParam 으로 변환해주고 굳이 어노테이션 안써도 int로 써도 되는게잇네요 객체도 마찬가지로여 이게 장단점이 있는건가요 아니면 스프링 버전이 올라가면서 생략이되서 그런건가요?
-
(•́ ✖ •̀)
알 수 없는 사용자
2 답변
-
RequestParam어노테이션을 이용하면, 파라미터에 대한 다양한 처리를 할 수 있습니다.
@RequestParam(value="flag", required=true) String flag
파라미터 이름이 "flag"이고 반드시 와야한다는 것을 의미합니다. 해당 파라미터의 값은 flag변수에 저장이됩니다.
@RequestParam(value="pageNo", required=false, defaultValue="1") int pageNo
위와 같이 선언하는 것은 파라미터 이름이 "pageNo"이고 반드시 와야한다는 것을 의미합니다. 만약 파라미터가 전달되지 않으면 기본값으로 1이 사용됩니다. 해당 파라미터의 값은 flag변수에 저장이됩니다.
를 참고하시면 더 좋을 것 같습니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
-
-
일반적으로 로컬(IDE)에서 개발시에는 @RequestParam 을 안 쓰고 파라미터를 써도 제대로 바인딩 됩니다.
하지만 서버에 배포하면 에러가 나는 경우가 있죠.
아래 링크와 같은 케이스라 생각하시면 되고, 일반 개발자들이 개발하실땐 꼭 붙이시는 걸 추천해드립니다.
@RequestParam(value="param1", required=false) Integer param1
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력