weixin_33725270 2016-01-20 10:39 采纳率: 0%
浏览 16

双弹簧验证

I have a trouble with a hibernate + spring validation. During execution of my ajax post-request the @InitBinder annotated method calls 2 times. In result I got double errors in the BindingResult object. I use this dependencies:

<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>

My controller class:

@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 class also have an annotated field in its parent class:

@NotBlank
private String name;

I have placed 'sysout' in the constructor of controller class and it have bean called just 1 time, so spring-context rises just once. Can someone say what is wrong?

  • 写回答

0条回答 默认 最新

    报告相同问题?