프로그래밍/Spring & Spring boot

[Spring스프링] @RequestParam / required / defaultValue

pupu91 2022. 9. 6. 17:21
반응형

 


 

@RequestParam

: 요청 파라미터를 매핑하여 호출 시 값을 넣어주는 어노테이션

  변수앞에 작성하며 사용할 속성 값과 매개변수의 이름이 다른 경우 @RequestParam("name")으로 설정

  어노테이션은 생략 가능 하지만 명시적으로 작성하는 것이 의미 파악에 쉬움

 


 

 

1) @RequestParam으로 값 꺼내기 

@Controller
@RequestMapping("/first/*")
public class FirstController {
	
    @GetMapping("modify")
	public void modify() {} 요청에 따른 화면전환 메소드
    
    @PostMapping("modify")
	public String modifyMenuPrice(Model mode, 
    					@RequestParam String modifyName, @RequestParam int modifyPrice){
    
    	String message = modifyName + "메뉴의 가격을" + modifyPrice + "원으로 변경하였습니다";
        model.addAttribute("message",message);
        
        return "first/messagePrinter";
    }
}

 

 

 

2. required 속성 활용

: 전달하는 name 속성이 일치하는 것이 없는 경우 400(잘못 된 요청)에러가 발생하는데

  required 속성을 false로 설정하면 해당 name 값이 존재하지 않아도 null로 처리하며 에러가 발생하지 않음

  메소드 ( @RequestParam (required = false) 변수) / 기본 값이 true이기 때문에 설정하지 않으면 에러 발생

@Controller
@RequestMapping("/first/*")
public class FirstController {
	
    @GetMapping("modify")
	public void modify() {} 요청에 따른 화면전환 메소드
    
    @PostMapping("modify")
	public String modifyMenuPrice(Model mode, 
    				@RequestParam (required = false) String modifyName, @RequestParam int modifyPrice){
    
    	String message = modifyName + "메뉴의 가격을" + modifyPrice + "원으로 변경하였습니다";
        model.addAttribute("message",message);
        
        return "first/messagePrinter";
    }
}

 

 

 

3. defaultValue 속성 활용

: 입력 값 없이 넘어오게 되면 " "와 같은 빈 문자열이 넘어오게 되어 parsing 관련 에러가 발생할 수 있음(400-잘못 된 요청)

  값이 넘어오지 않는 경우 defaultValue를 이용하여 기본 값 설정 가능

  메소드( @RequestParam (defaultValue = "0") 변수 )

@Controller
@RequestMapping("/first/*")
public class FirstController {
	
    @GetMapping("modify")
	public void modify() {} 요청에 따른 화면전환 메소드
    
    @PostMapping("modify")
	public String modifyMenuPrice(Model mode, 
    				@RequestParam (required = false) String modifyName, @RequestParam (defaultValue = "0") int modifyPrice){
    
    	String message = modifyName + "메뉴의 가격을" + modifyPrice + "원으로 변경하였습니다";
        model.addAttribute("message",message);
        
        return "first/messagePrinter";
    }
}

 

 

반응형