我遇到了hibernate + spring验证的问题。在执行我的ajax post-request期间,@ InitBinder注释方法调用了2次。结果我在BindingResult对象中遇到了双重错误。我使用这种依赖:
<spring-security.version>3.2.9.RELEASE</spring-security.version>
<validation.api.version>1.1.0.Final</validation.api.version>
<hibernate.validator.version>5.2.2.Final</hibernate.validator.version>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${version.spring}</version>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>${validation.api.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>${hibernate.validator.version}</version>
</dependency>
我的控制器类:
@Autowired
private MailConfigValidator mailConfigValidator;
@InitBinder("config")
public void initBinder(WebDataBinder binder) {
binder.addValidators(mailConfigValidator);
}
@ResponseBody
@RequestMapping(value = "/updateConfig", method = RequestMethod.POST)
public NamedEntity updateConfig(@RequestBody @Valid Config config, BindingResult result) {
if (result.hasErrors()) {
return new NamedEntity(0L, getMessage("config.valid.failed"));
}
configService.saveConfig(config);
return new NamedEntity(1L, getMessage("config.update.success"));
}
Config类在其父类中也有一个带注释的字段:
@NotBlank
private String name;
我在控制器类的构造函数中放置了' sysout ',它只有1次调用bean,因此spring-context只增加一次。有人可以说出了什么问题吗?