복붙노트

[SPRING] Spring MVC에서 RequestParam과 함께 Valid 매개 변수를 사용할 수없는 이유는 무엇입니까?

SPRING

Spring MVC에서 RequestParam과 함께 Valid 매개 변수를 사용할 수없는 이유는 무엇입니까?

예:

public String getStudentResult(@RequestParam(value = "regNo", required = true) String regNo, ModelMap model){

여기에 regNo 매개 변수에 @valid를 어떻게 사용할 수 있습니까?

해결법

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

    1.늦은 대답. 최근에이 문제가 발생하여 해결책을 찾았습니다. 다음과 같이 할 수 있습니다. 먼저 MethodValidationPostProcessor의 bean을 등록하십시오.

    늦은 대답. 최근에이 문제가 발생하여 해결책을 찾았습니다. 다음과 같이 할 수 있습니다. 먼저 MethodValidationPostProcessor의 bean을 등록하십시오.

    @Bean
    public MethodValidationPostProcessor methodValidationPostProcessor() {
        return new MethodValidationPostProcessor();
    }
    

    그런 다음 컨트롤러의 유형 수준에 @Validated를 추가하십시오.

    @RestController
    @Validated
    public class FooController {
        @RequestMapping("/email")
        public Map<String, Object> validate(@Email(message="请输入合法的email地址") @RequestParam String email){
        Map<String, Object> result = new HashMap<String, Object>();
        result.put("email", email);
        return result;
        }
    }
    

    사용자가 잘못된 이메일 주소를 요청하면 ConstraintViolationException이 발생합니다. 그리고 당신은 그것을 잡을 수 있습니다 :

    @ControllerAdvice
    public class AmazonExceptionHandler {
    
    @ExceptionHandler(ConstraintViolationException.class)
    @ResponseBody
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    public String handleValidationException(ConstraintViolationException e){
        for(ConstraintViolation<?> s:e.getConstraintViolations()){
            return s.getInvalidValue()+": "+s.getMessage();
        }
        return "请求参数不合法";
    }
    

    }

    내 데모를 여기서 확인할 수 있습니다.

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

    2.@Valid는 bean의 유효성을 검사하는 데 사용될 수 있습니다. 나는 그것이 단일 문자열 매개 변수에 사용되는 것을 보지 못했습니다. 또한 유효성 검사기를 구성해야합니다.

    @Valid는 bean의 유효성을 검사하는 데 사용될 수 있습니다. 나는 그것이 단일 문자열 매개 변수에 사용되는 것을 보지 못했습니다. 또한 유효성 검사기를 구성해야합니다.

    참조 : http://docs.spring.io/spring/docs/current/spring-framework-reference/html/validation.html

  3. ==============================

    3.한 가지 방법은 래퍼 빈을 다음과 같이 작성하는 것입니다.

    한 가지 방법은 래퍼 빈을 다음과 같이 작성하는 것입니다.

     public class RegWrapperBean{
    
            @NotNull
            String regNo ; 
    
            public String getRegNo(){
                 return regNo ;
            }
    
            public void setRegNo(String str){
                 this.regNo=str;
            }
    
    }
    

    핸들러 메소드는 다음과 같습니다.

      @RequestMapping(value="/getStudentResult", method=RequestMethod.POST)
        public String getStudentResult(@Valid @ModelAttribute RegWrapperBean bean,
                BindingResult validationResult, Model model) {
        }
    

    이 답변을 여기 또는 여기에서 참조하십시오.

    그 도움이 되길 바랍니다.

  4. from https://stackoverflow.com/questions/26229453/why-cant-i-use-valid-parameter-along-with-requestparam-in-spring-mvc by cc-by-sa and MIT license