kongmd 2017-04-13 09:17 采纳率: 0%
浏览 801

springMVC自己配置bean实现注解驱动后JSR303验证失效

我自己拷贝了RequestMappingHandlerAdapter,进行了一点修改,然后想让修改后的适配器生效,就替换了mvc:annotation-driven标签,配置RequestMappingHandlerMapping的bean和自己的RequestMappingHandlerAdapter的bean,虽能正常使用,但是JSR303验证不生效了,不能验证参数的有效性。有大神知道原因么,求指点。

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-05 17:38
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    你可能遇到了一个问题,那就是在使用JSR 303(Java Specification Request)验证时,Spring MVC默认使用的是基于XML的验证方式。如果你试图在你的自定义处理类中使用JSR 303验证,那么你需要确保你在处理方法上正确地注入了@ControllerAdvice或者@ResponseBody注解来启用JSR 303验证。

    首先,请检查你的自定义处理器是否正确地实现了javax.servlet.http.HttpServletRequest接口,并且返回了一个包含请求数据的HttpServletRequest对象。例如:

    public class CustomController {
        @GetMapping("/my-resource")
        public String myAction(HttpServletRequest request) throws ServletException, IOException {
            // 这里应该有一个方法来解析请求参数并返回一个响应。
            return "result";
        }
    }
    

    然后,在你的控制器处理器类中,你可以这样注入HttpServletRequest对象到处理器上:

    @Controller
    @RequestMapping(value = "/my-resource", method = RequestMethod.GET)
    public class CustomController {
        private HttpServletRequest request;
    
        @Autowired
        public void setRequest(HttpServletRequest request) {
            this.request = request;
        }
    
        @GetMapping("/my-resource")
        public String myAction(HttpServletRequest request) throws ServletException, IOException {
            // 使用request来解析请求参数...
            return "result";
        }
    }
    

    现在你应该能看到你的JSR 303验证工作正常运行了。

    评论

报告相同问题?