2012-12-06 108 views
0

我们有JSR注解春+ JSR 303验证组被忽略

 
public class CustomerDTO { 

    private static final long serialVersionUID = 1L; 

    private Integer id; 

    @NotEmpty(message = "{customer.firstname.empty}") 
    private String firstName; 

    @NotEmpty(message = "{customer.lastname.empty}") 
    private String lastName; 

    @NotEmpty(groups={PasswordChange.class}, message="{password.empty}") 
    private String password; 

    @NotEmpty(groups={PasswordChange.class}, message="{confirmation.password.empty}") 
    private String password2; 

} 

一个简单的bean,我们有一个Spring控制器

 
@RequestMapping(value="/changePassword", method = RequestMethod.POST) 
public String changePassword(@Validated({ PasswordChange.class }) @ModelAttribute("customerdto") CustomerDTO customerDTO, BindingResult result, Locale locale) { 
    logger.debug("Change Password was submitted with information: " + customerDTO.toString()); 
    try { 
     passwordStrengthPolicy.checkPasswordStrength(locale, customerDTO.getPassword()); 
     if (result.hasErrors()) { 
      return "changePassword"; 
     } 
     logger.debug("Calling customer service changePassword: " + customerDTO); 
     customerOnlineNewService.changePassword(customerDTO); 
    } catch (PasswordNotChangedException e) { 
     logger.error("Could not change password PasswordNotChangedException: " + customerDTO.toString()); 
      return "changePassword"; 
    } catch (PasswordNotSecureException e) { 
     return "changePassword"; 
    } 
    return createRedirectViewPath("changePassword"); 
} 

我们的问题是,当changePassword调用验证忽略该组(PasswordChange.class)并仅验证不在该组中的firstName和lastName。

有什么想法? 非常感谢您的时间。

+0

我看不错。你有没有打开调试跟踪? – Hardy

+0

没有怪异的消息。因为它验证了ChangePassword方法运行和result.hasErrors()为真全豆。 – nsideras

回答