[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.유효성 검사를 목적으로합니다.
유효성 검사를 목적으로합니다.
자세한 정보는 여기를보십시오. http://blog.springsource.com/2009/11/17/spring-3-type-conversion-and-validation/
-
==============================
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.IIRC @Valid는 Spring 주석이 아니라 JSR-303 주석 (Bean Validation 표준)입니다. 그것이하는 일은 기본적으로 메소드에 보내는 데이터가 유효한지 여부입니다 (scriptFile의 유효성을 검사합니다).
IIRC @Valid는 Spring 주석이 아니라 JSR-303 주석 (Bean Validation 표준)입니다. 그것이하는 일은 기본적으로 메소드에 보내는 데이터가 유효한지 여부입니다 (scriptFile의 유효성을 검사합니다).
-
==============================
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.
public String create(@Valid @NotNull ScriptFile scriptFile, BindingResult result, ModelMap modelMap) { if (scriptFile == null) throw new IllegalArgumentException("A scriptFile is required");
이 @NotNull 주석은 조건이 필요하지 않은 경우 유효합니다.
-
==============================
6.위의 답변에 추가하기 만하면 웹 응용 프로그램에서 @valid는 유효성이 검사 될 bean이 유효성 검사 주석으로 주석이 달린 곳에서 사용됩니다. @NotNull, @Email (hibernate annotation). 사용자로부터 입력을받는 동안 값을 검증 할 수 있고 바인딩 결과에 유효성 검사 결과가있을 때. bindingResult.hasErrors ()는 유효성 검사가 실패했는지 여부를 알려줍니다.
위의 답변에 추가하기 만하면 웹 응용 프로그램에서 @valid는 유효성이 검사 될 bean이 유효성 검사 주석으로 주석이 달린 곳에서 사용됩니다. @NotNull, @Email (hibernate annotation). 사용자로부터 입력을받는 동안 값을 검증 할 수 있고 바인딩 결과에 유효성 검사 결과가있을 때. bindingResult.hasErrors ()는 유효성 검사가 실패했는지 여부를 알려줍니다.
-
==============================
7.@Valid의 또 다른 유용한 측면은 위에서 말한 것이 아닙니다. 즉, Postman을 사용하여 엔드 포인트를 테스트하는 것입니다. @Valid는 잘못된 REST 호출의 출력을 간신히 읽을 수있는 텍스트가 아닌 형식이 지정된 JSON으로 포맷합니다. 사용자에게 상업적으로 사용할 수있는 API를 만드는 경우 매우 유용합니다.
@Valid의 또 다른 유용한 측면은 위에서 말한 것이 아닙니다. 즉, Postman을 사용하여 엔드 포인트를 테스트하는 것입니다. @Valid는 잘못된 REST 호출의 출력을 간신히 읽을 수있는 텍스트가 아닌 형식이 지정된 JSON으로 포맷합니다. 사용자에게 상업적으로 사용할 수있는 API를 만드는 경우 매우 유용합니다.
from https://stackoverflow.com/questions/3595160/what-does-the-valid-annotation-indicate-in-spring by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] ApplicationContext 객체로부터 속성 값을 얻으려면 어떻게해야합니까? (주석을 사용하지 않음) (0) | 2019.02.04 |
---|---|
[SPRING] 요청 된 bean은 현재 작성 중입니다. 해결할 수없는 순환 참조가 있습니까? (0) | 2019.02.04 |
[SPRING] 스프링 보안 3.2.1 WebSecurityConfigurerAdapter가 다른 여러 로그인 폼 (0) | 2019.02.04 |
[SPRING] 인터페이스를 사용하는 이유는 무엇입니까 (Java EE 또는 Spring 및 JPA) (0) | 2019.02.04 |
[SPRING] @PreAuthorize 주석이 스프링 보안을 작동하지 않음 (0) | 2019.02.04 |