Controller 의 handler 방법 파라미터

2950 단어 springMVCcontroller
오늘 은 Spring MVC 에서 16.3 절 (Implementing Controllers) 의 내용 을 계속 보 겠 습 니 다.
        @ RequestMapping 에서 설명 하 는 handler 가 허용 하 는 방법 매개 변 수 는 Errors 와 BindingResult 를 포함 합 니 다. 이 두 가지 종 류 는 Spring 의 검증 프레임 워 크 (vaidation) 의 클래스 입 니 다.이 매개 변 수 는 매개 변수 목록 에 있 는 이전 (바짝 붙 어 있 고 중간 에 다른 Model 매개 변 수 를 만 들 수 없습니다. 방법 서명 에 model 대상 이 한 개 만 있 는 것 이 아니 라 Spring 은 각각 Binding Result 대상 을 만 들 것 입 니 다) @ ModelAttribute 에 연 결 된 model 이미지 에 오류 검증 정 보 를 되 돌려 줍 니 다.
        
        @ ModelAttribute 를 언급 했 습 니 다. 이 주 해 는 방법 이나 방법 매개 변수 목록 에 넣 을 수 있 습 니 다.
        방법 에 이 방법 을 추가 하 는 목적 은 하나 이상 의 model 속성 을 추가 하 는 것 입 니 다. @ RequestMapping method 와 같은 매개 변수 형식 을 지원 하지만 직접 매 핑 요청 을 할 수 없습니다.같은 Controller 에서 @ ModelAttribute method 는 @ RequestMapping method 이전에 활성 화 됩 니 다.  다음 예 는 하나 와 여러 속성 을 추가 하 는 경우 입 니 다. 
//add one attribute
//the return type of the method is added to the model under the name "account"
//you can customize the name via @ModelAttribute("myAccount")
@ModelAttribute
public Account addAccount(@RequestParam String number){
    return accountManager.findAccount(number);
}

//add multiple attributes
public void populateModel(@RequestParam String number, Model model){
    model.addAttribute(accountManager.findAccount(number));
    // add more...
}

        속성 을 추가 한 상태 에서 속성 명 을 명확 하 게 지정 하지 않 으 면 반환 대상 의 유형 에 따라 기본적으로 지정 한 속성 명 입 니 다. 예 를 들 어 반환 대상 유형 이 Account 이면 속성 명 은 account 입 니 다.
        @ModelAttribute 방법 매개 변수 에 추가
        
        또 다른 주의해 야 할 것 은 @ RequestBody 가 설명 하 는 방법 매개 변수 입 니 다. 이 매개 변 수 는 HTTP request body 와 연결 되 어 있 습 니 다.request body 를 방법 매개 변수 로 변환 하려 면 HttpMessageConverter (MVC namespace 를 언급 했 습 니 다. 기본적으로 더 많은 message converters 를 등 록 했 습 니 다) 를 사용 해 야 합 니 다. 이 종 류 는 HTTP request message 를 대상 으로 변환 할 수도 있 고 한 대상 을 HTTP response body 로 변환 할 수도 있 습 니 다.
        @RequestBody 방법 매개 변 수 는 @ Valid 에 주석 을 달 수 있 습 니 다. 그러면 Validator 에 의 해 검 증 됩 니 다.@ ModelAttribute 인자 와 달리 @ RequestBody 의 인증 오 류 는 항상 MethodArgument NotValidException 을 가 져 옵 니 다. 이 이상 은 Default Handler Exception Resolver 에 의 해 처리 되 고 클 라 이언 트 에 400 오류 코드 를 되 돌려 줍 니 다.
        @Response Body 는 @ RequestBody 와 비슷 합 니 다. 이 주 해 를 방법 에 놓 으 면 이 방법 이 되 돌아 오 는 내용 을 HTTP response body 에 직접 기록 합 니 다 (Model 에 넣 지 않 고 그림 이름 으로 해석 되 지 않 습 니 다). 예 를 들 어:
@RequestMapping(value="/something", method=RequestMethod.PUT)
@ResponseBody
public String helloWorld(){
    return "hello world!"
}

        위의 예, "hello world!" 이 텍스트 는 HTTP response stream 에 기 록 됩 니 다.
        요청 (request parameters, path variables, request headers, cookie values 등 포함) 에서 추출 한 String - based 값 은 그들 이 연 결 된 매개 변수 에 속 하 는 형식 으로 변환 해 야 합 니 다. 연 결 된 매개 변수 가 String 이 아니라면 Spring 은 앞에서 언급 한 값 을 자동 으로 적당 한 유형 으로 변환 합 니 다. 모든 간단 한 유형, 예 를 들 어 int, long,Date 등 은 모두 지 지 를 받는다.WebDataBinder 나 FormatingConversionService 를 통 해 이러한 전환 을 더욱 맞 출 수 있다.

좋은 웹페이지 즐겨찾기