본문 바로가기

웹개발/Spring

@RequestParam

 상황에 따라 handler 메소드의 매개변수 이름들을 request parameter와 일치시켜주기 어려울 때 @RequestParam을 사용하여, request parameter와 다른 이름의 매개변수로 받을 수 있다. 

 

- 예제코드

	//만약 request parameter 의 name 과 매개변수가 같을 수 없는 상황이면 
	public void findMember(
			@RequestParam("id") String userid,	// id 란 name 의 parameter 값을 userid 매개변수가 받는다 
			@RequestParam("name") String username, 
			Model model) {
	System.out.println("member/find : id ="+userid+" name= "+username);
	model.addAttribute("id", userid);
	model.addAttribute("name", username);
	}

 

@RequestParam + Map<namve, value>

위의 경우 id 값이 없거나 불가능하면 에러가 발생. 

-> 에러를 피하는 법

  1. @RequestParam(value="text", required=false, defaultValue="0")
    • 예제코드
      • 	public void findMember(
        			@RequestParam(value= "id", required=false, defaultValue="0") String userid,	// id 란 name 의 parameter 값을 userid 매개변수가 받는다 
        			@RequestParam("name") String username, 
        			Model model) {
        	System.out.println("member/find : id ="+userid+" name= "+username);
        	model.addAttribute("id", userid);
        	model.addAttribute("name", username);
        	}
  2. @RequestParam Map<name, value>
    • 예제코드
      • 	// Map<>.get()의 값이 없으면 null을 리턴하기 때문에 에러 안남.
            public void findMember(
        			@RequestParam	Map<String, String> map, 
        			Model model) {
        	System.out.println("member/find : id ="+map.get("id")+" name= "+map.get("name"));
        	model.addAttribute("id", map.get("id"));
        	model.addAttribute("name", map.get("name"));
        	}
         + Map<> 으로도 다량의 parameter를 받을 수 있다. 하지만, 개발한 사람 외에는 유지보수가 어려움. => 커맨더 사용 방식 추천

'웹개발 > Spring' 카테고리의 다른 글

Maven 이란?  (0) 2021.11.29
커맨드 객체(Command Object)  (0) 2021.11.29
Request Parameter  (0) 2021.11.29
redirect, RedirectAttributes  (0) 2021.11.29
Servlet, JSP, JavaScript, Spring의 redirect, forward 총정리  (0) 2021.11.29