복붙노트

[SPRING] @Valid 주석은 Spring에서 무엇을 나타 냅니까?

SPRING

@Valid 주석은 Spring에서 무엇을 나타 냅니까?

다음 예제에서 ScriptFile 매개 변수는 @Valid 주석으로 표시됩니다.

@Valid 주석은 무엇을합니까?

@RequestMapping(value = "/scriptfile", method = RequestMethod.POST)    
public String create(@Valid ScriptFile scriptFile, BindingResult result, ModelMap modelMap) {    
    if (scriptFile == null) throw new IllegalArgumentException("A scriptFile is required");        
    if (result.hasErrors()) {        
        modelMap.addAttribute("scriptFile", scriptFile);            
        modelMap.addAttribute("showcases", ShowCase.findAllShowCases());            
        return "scriptfile/create";            
    }        
    scriptFile.persist();        
    return "redirect:/scriptfile/" + scriptFile.getId();        
}    

해결법

  1. ==============================

    1.유효성 검사를 목적으로합니다.

    유효성 검사를 목적으로합니다.

    자세한 정보는 여기를보십시오. http://blog.springsource.com/2009/11/17/spring-3-type-conversion-and-validation/

  2. ==============================

    2.위의 답변에 추가하여 다음을 살펴보십시오. AppointmentForm의 날짜 열은 몇 개의 주석으로 주석 처리됩니다. AppointmentForm (이 경우 @NotNull 및 @Future)에 대한 유효성 검사를 트리거하는 @Valid 주석을 사용하면됩니다. 이러한 주석은 다른 JSR-303 제공자 (예 : Hibernate, Spring..etc)에서 올 수 있습니다.

    위의 답변에 추가하여 다음을 살펴보십시오. AppointmentForm의 날짜 열은 몇 개의 주석으로 주석 처리됩니다. AppointmentForm (이 경우 @NotNull 및 @Future)에 대한 유효성 검사를 트리거하는 @Valid 주석을 사용하면됩니다. 이러한 주석은 다른 JSR-303 제공자 (예 : Hibernate, Spring..etc)에서 올 수 있습니다.

        @RequestMapping(value = "/appointments", method = RequestMethod.POST)
        public String add(@Valid AppointmentForm form, BindingResult result) {
            ....
        }
    
        static class AppointmentForm {
    
            @NotNull @Future
            private Date date;
        }
    
  3. ==============================

    3.IIRC @Valid는 Spring 주석이 아니라 JSR-303 주석 (Bean Validation 표준)입니다. 그것이하는 일은 기본적으로 메소드에 보내는 데이터가 유효한지 여부입니다 (scriptFile의 유효성을 검사합니다).

    IIRC @Valid는 Spring 주석이 아니라 JSR-303 주석 (Bean Validation 표준)입니다. 그것이하는 일은 기본적으로 메소드에 보내는 데이터가 유효한지 여부입니다 (scriptFile의 유효성을 검사합니다).

  4. ==============================

    4.@Valid 자체는 Spring과 아무 관련이 없습니다. 이것은 Bean Validation 사양의 일부입니다 (일부는 2017 년 하반기의 최신 JSR 380 임). 그러나 @Valid는 매우 오래되었고 JSR 303에서 모든 것을 파생시킵니다.

    @Valid 자체는 Spring과 아무 관련이 없습니다. 이것은 Bean Validation 사양의 일부입니다 (일부는 2017 년 하반기의 최신 JSR 380 임). 그러나 @Valid는 매우 오래되었고 JSR 303에서 모든 것을 파생시킵니다.

    아시다시피, Spring은 모든 다른 JSR과 Java 라이브러리 (JPA, JTA, Caching 등)와의 통합을 제공하는 데 매우 뛰어나며, 물론 그 사람들도 유효성 검사를 처리했습니다. 이를 용이하게하는 주요 구성 요소 중 하나는 MethodValidationPostProcessor입니다.

    귀하의 질문에 대답하려고 - 당신이 복잡한 그래프를 확인하고 개체의 최상위 요소뿐만 아니라 유효성을 검사하고자 할 때 @Valid는 소위 유효성 검사 계단식으로 매우 편리합니다. 더 깊이 가고 싶을 때마다 @Valid를 사용해야합니다. 그것이 JSR이 지시하는 것입니다. Spring은 약간의 편차를 가지고이를 준수 할 것입니다 (예를 들어, RestController 메소드에 @Valid 대신 @Validated를 넣고 유효성 검사를 시도했지만, 보통 "서비스"bean에는 적용되지 않습니다).

  5. ==============================

    5.

    public String create(@Valid @NotNull ScriptFile scriptFile, BindingResult result, ModelMap modelMap) {    
        if (scriptFile == null) throw new IllegalArgumentException("A scriptFile is required");        
    

    이 @NotNull 주석은 조건이 필요하지 않은 경우 유효합니다.

  6. ==============================

    6.위의 답변에 추가하기 만하면 웹 응용 프로그램에서 @valid는 유효성이 검사 될 bean이 유효성 검사 주석으로 주석이 달린 곳에서 사용됩니다. @NotNull, @Email (hibernate annotation). 사용자로부터 입력을받는 동안 값을 검증 할 수 있고 바인딩 결과에 유효성 검사 결과가있을 때. bindingResult.hasErrors ()는 유효성 검사가 실패했는지 여부를 알려줍니다.

    위의 답변에 추가하기 만하면 웹 응용 프로그램에서 @valid는 유효성이 검사 될 bean이 유효성 검사 주석으로 주석이 달린 곳에서 사용됩니다. @NotNull, @Email (hibernate annotation). 사용자로부터 입력을받는 동안 값을 검증 할 수 있고 바인딩 결과에 유효성 검사 결과가있을 때. bindingResult.hasErrors ()는 유효성 검사가 실패했는지 여부를 알려줍니다.

  7. ==============================

    7.@Valid의 또 다른 유용한 측면은 위에서 말한 것이 아닙니다. 즉, Postman을 사용하여 엔드 포인트를 테스트하는 것입니다. @Valid는 잘못된 REST 호출의 출력을 간신히 읽을 수있는 텍스트가 아닌 형식이 지정된 JSON으로 포맷합니다. 사용자에게 상업적으로 사용할 수있는 API를 만드는 경우 매우 유용합니다.

    @Valid의 또 다른 유용한 측면은 위에서 말한 것이 아닙니다. 즉, Postman을 사용하여 엔드 포인트를 테스트하는 것입니다. @Valid는 잘못된 REST 호출의 출력을 간신히 읽을 수있는 텍스트가 아닌 형식이 지정된 JSON으로 포맷합니다. 사용자에게 상업적으로 사용할 수있는 API를 만드는 경우 매우 유용합니다.

  8. from https://stackoverflow.com/questions/3595160/what-does-the-valid-annotation-indicate-in-spring by cc-by-sa and MIT license