Java Spring(3.1.0)控制器验证不工作
我使用的是Spring3.1.0,有几个Java Spring(3.1.0)控制器验证不工作,java,spring,validation,Java,Spring,Validation,我使用的是Spring3.1.0,有几个@Controller类在Tomcat上运行 我使用类级别的@Validated注释来启用验证,并对控制器方法参数定义了一些约束 下面是一个代码示例: @Controller @RequestMapping(value = "/chapters") public class ChapterController { @RequestMapping(value = "", method = RequestMet
@Controller
类在Tomcat上运行
我使用类级别的@Validated
注释来启用验证,并对控制器方法参数定义了一些约束
下面是一个代码示例:
@Controller
@RequestMapping(value = "/chapters")
public class ChapterController {
@RequestMapping(value = "", method = RequestMethod.GET)
@ResponseStatus(HttpStatus.OK)
@ResponseBody
protected Chapter get(@RequestParam @Min(1) @Max(10) count) {
return getChapters(count);
}
}
即使需要定义注释,验证也不会发生,因此当我传递一个无效值(例如:count=15)时,什么也不会发生,并且处理程序正在运行该值
我希望无效的函数参数会引发一些异常,
我该怎么办
谢谢启用参数验证还需要
MethodValidationPostProcessor
bean。
因为您没有使用Spring引导,所以需要显式地添加这个bean(使用Spring引导,如果您在类路径上有hibernate验证程序
依赖项,那么这个bean是自动配置的)
你用的是Spring boot吗?没有。只有Spring框架。检查我的答案。明白了。这个bean应该添加到application-context.xml吗?它有任何特定的id吗?@forecik是的,您在
application context.xml
中添加这个bean
。请参阅此示例:或检查文档第7.8节Spring ValidationWell nope。仍然不起作用。与中的MethodValidationPostProcessor和LocalValidatoryFactoryBean不同example@Forepick类路径中是否有JSR-303/JSR-349提供程序,例如Hibernate Validator?是的,我在pom.xml上有Hibernate Validator
@EnableWebMvc
@Configuration
@ComponentScan("yourpackage")
public class ClientWebConfigJava implements WebMvcConfigurer {
@Bean
public MethodValidationPostProcessor methodValidationPostProcessor() {
return new MethodValidationPostProcessor();
}
// ...
}