spring - 为什么我不能在 Spring MVC 中使用 Valid 参数和 RequestParam?

标签 spring spring-mvc bean-validation

例子:

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

如何在此处为 regNo 参数使用@valid?

最佳答案

迟到的答案。我最近遇到了这个问题并找到了解决方案。你可以这样做, 首先注册一个MethodValidationPostProcessor的bean:

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

然后将 @Validated 添加到 Controller 的类型级别:

@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

关于spring - 为什么我不能在 Spring MVC 中使用 Valid 参数和 RequestParam?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26229453/

相关文章:

java - 运行并行作业时如何安全地将参数从 Tasklet 传递到步骤

java - HTTP 状态 404 Apache Tomcat 错误 Spring MVC Java?

java - Spring MVC : Relative URL problems

java - 在 Spring 项目中实现 JSR-303 注释

Vaadin 7 验证(BeanValidator 和 setrequired)

javax.validation.NotBlank 缺少 validator

java - Spring MVC、Maven、Pivo​​tal tc 服务器 HTML 404 未找到错误

java - 如何在 Spring 上重现焊接实例行为

java - Spring MVC bean 验证问题

java - 收到错误 "org.springframework.beans.factory.BeanCreationException: Error creating bean with name ' homeController'"