Program Club

Spring MVC에서 BindingResult 인터페이스의 사용은 무엇입니까?

proclub 2020. 12. 30. 08:20
반응형

Spring MVC에서 BindingResult 인터페이스의 사용은 무엇입니까?


인가 BindingResult보기, 또는 뭔가 그냥 예외를 결합하는 데 유용합니다?

정확한 사용법은 BindingResult무엇입니까?

또는 모델 속성을 뷰와 바인딩하는 데 유용합니다.


특정 예 : BindingResult 개체를 Controller 내부 Validator 의 validate 메서드에 대한 인수로 사용합니다 .

그런 다음이 개체에서 유효성 검사 오류를 확인할 수 있습니다.

validator.validate(modelObject, bindingResult);  
if (bindingResult.hasErrors()) {  
    // do something  
}

기본적으로 BindingResult유효성 검사 결과를 저장하는 객체가 유효성 검사 결과 (오류, 허용되지 않는 필드에 바인딩 시도 등)를 저장하고 검색하는 방법을 지정하는 인터페이스입니다.

에서 주석 튜토리얼 스프링 MVC 폼 검증 :

[ BindingResult]는 유효성 검사 및 바인딩 결과보유하고 발생한 오류를 포함 하는 Spring의 객체입니다 . BindingResult검증 또는 다른 봄 개체를 확인하고 예외를 throw 할 수 없게됩니다 모델 객체 후 바로 와야합니다.

Spring이을 볼 때 @Valid, 검증되는 객체에 대한 검증자를 찾으려고합니다. "주석 기반"이 활성화 된 경우 Spring은 유효성 검사 주석을 자동으로 선택합니다. 그런 다음 Spring은 유효성 검사기를 호출하고 오류를에 넣고 BindingResultBindingResult를 뷰 모델에 추가합니다.


매개 변수의 순서가 실제로 스프링에 중요하다는 점에 유의하는 것이 중요합니다. BindingResult는 유효성을 검사하는 Form 바로 뒤에 와야합니다. 마찬가지로 [선택 사항] Model 매개 변수는 BindingResult 뒤에 와야합니다. 예:

유효한:

@RequestMapping(value = "/entry/updateQuantity", method = RequestMethod.POST)
public String updateEntryQuantity(@Valid final UpdateQuantityForm form,
                                  final BindingResult bindingResult,
                                  @RequestParam("pk") final long pk,
                                  final Model model) {
}

유효하지:

RequestMapping(value = "/entry/updateQuantity", method = RequestMethod.POST)
public String updateEntryQuantity(@Valid final UpdateQuantityForm form,
                                  @RequestParam("pk") final long pk,
                                  final BindingResult bindingResult,
                                  final Model model) {
}

공식 Spring 문서에서 :

바인딩 결과나타내는 일반 인터페이스입니다 . 위한 인터페이스 확장 오류 등록 기능을 A의 허용 검사기를 적용하고, 추가 결합 특정 분석 모델 구축한다.

역할 DataBinder 대한 결과 홀더 DataBinder.getBindingResult () 메소드를 통해 획득. BindingResult 구현은 예를 들어 Validator를 호출하기 위해 직접 사용할 수도 있습니다 (예 : 단위 테스트의 일부로).


순차 프로세스입니다. Request는 먼저 FrontController에서 처리 한 다음 @Controller 주석을 사용하여 자체 사용자 지정 컨트롤러로 이동합니다.

그러나 우리의 컨트롤러 메소드는 modelattribute을 사용하여 빈을 바인딩하고 있으며 빈 값에 대한 유효성 검사도 거의 수행하지 않습니다.

따라서 요청을 컨트롤러 클래스로 이동하는 대신 FrontController는 요청을 하나의 인터셉터로 이동하여 빈의 임시 개체를 만들고 값을 확인합니다. 유효성 검사가 성공하면 @ModelAttribute에 저장된 실제 빈과 임시 obj 값을 바인딩합니다. 그렇지 않으면 유효성 검사가 실패하면 바인딩하지 않고 resp를 오류 페이지 또는 원하는 곳으로 이동합니다.

여기에 이미지 설명 입력


BindingResult는 유효성 검사에 사용됩니다 ..

예:-

 public @ResponseBody String nutzer(@ModelAttribute(value="nutzer") Nutzer nutzer, BindingResult ergebnis){
        String ergebnisText;
        if(!ergebnis.hasErrors()){
            nutzerList.add(nutzer);
            ergebnisText = "Anzahl: " + nutzerList.size();
        }else{
            ergebnisText = "Error!!!!!!!!!!!";
        }
        return ergebnisText;
    }

참조 URL : https://stackoverflow.com/questions/10413886/what-is-the-use-of-bindingresult-interface-in-spring-mvc

반응형