예 :Spring MVC에서 RequestParam과 함께 유효한 매개 변수를 사용할 수없는 이유는 무엇입니까?
public String getStudentResult(@RequestParam(value = "regNo", required = true) String regNo, ModelMap model){
어떻게 여기 레뇨 매개 변수에 @valid 사용할 수 있습니까?
예 :Spring MVC에서 RequestParam과 함께 유효한 매개 변수를 사용할 수없는 이유는 무엇입니까?
public String getStudentResult(@RequestParam(value = "regNo", required = true) String regNo, ModelMap model){
어떻게 여기 레뇨 매개 변수에 @valid 사용할 수 있습니까?
콩을 검증하는 데 @Valid를 사용할 수 있습니다. 나는 그것이 단일 문자열 매개 변수에 사용되는 것을 보지 못했습니다. 또한 유효성 검사기를 구성해야합니다.
@Valid 주석은 표준 JSR-303 Bean 유효성 검사 API의 일부이며 Spring 관련 구조가 아닙니다. Spring MVC는 적절한 Validator가 구성되어있는 한 바인딩 후에 @Valid 객체를 확인합니다.
는
참조 : 그것을 할 http://docs.spring.io/spring/docs/current/spring-framework-reference/html/validation.html
답변 해 주셔서 감사합니다. Sever 측에서 유효성을 검사 할 Spring MVC 프로젝트 용 단일 String 매개 변수의 유효성을 검사하는 방법을 알고 싶습니다. – user3705478
2) 또 다른 질문은 @ModelAttribute와 @RequestParam (value = "regNo", required = true)을 함께 사용할 수 있습니까? – user3705478
한 가지 방법은 같은 래퍼 Bean을 작성하는 것입니다 다음
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) {
}
희망이 도움이됩니다.
답 답. 최근에이 문제가 발생하여 해결책을 찾았습니다. 컨트롤러의 유형 수준으로 @Validated
를 추가 한 후
@Bean
public MethodValidationPostProcessor methodValidationPostProcessor() {
return new MethodValidationPostProcessor();
}
과 : 다음과 같이 첫째 MethodValidationPostProcessor
의 빈을 등록, 그것을 할 수
@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 "请求参数不合法";
}
}
당신은 내 데모 here
MethodValidationPostProcessor 빈은 나를 위해 빠진 퍼즐 조각이었습니다. 감사. –
아니 당신은 할 수 없습니다를 확인할 수 있습니다. '@ Valid'는 예를 들어'String'이나'Integer'와 같은 원시 구조가 아닌 객체에서만 작동합니다. 유효성을 확인하려면 직접해야합니다. –
https://jira.spring.io/browse/SPR-6380 – Bax