1

JSR アノテーションを持つ単純な Bean があります

パブリック クラス CustomerDTO {

    private static final long serialVersionUID = 1L;

    プライベート整数 ID;

    @NotEmpty(message = "{customer.firstname.empty}")
    プライベート文字列 firstName;

    @NotEmpty(message = "{customer.lastname.empty}")
    プライベート文字列 lastName;

    @NotEmpty(groups={PasswordChange.class}, message="{password.empty}")
    プライベート文字列パスワード;

    @NotEmpty(groups={PasswordChange.class}, message="{confirmation.password.empty}")
    プライベート文字列 password2;

}

そしてSpring Controllerがあります

@RequestMapping(value="/changePassword", メソッド = RequestMethod.POST)
public String changePassword(@Validated({ PasswordChange.class }) @ModelAttribute("customerdto") CustomerDTO customerDTO, BindingResult result, Locale locale) {
    logger.debug("パスワードの変更が次の情報とともに送信されました: " + customerDTO.toString());
    試す {
        passwordStrengthPolicy.checkPasswordStrength(ロケール, customerDTO.getPassword());
        if (result.hasErrors()) {
            "changePassword" を返します。
        }
        logger.debug("顧客サービスの呼び出し changePassword: " + customerDTO);
        customerOnlineNewService.changePassword(customerDTO);
    } キャッチ (PasswordNotChangedException e) {
        logger.error("パスワードを変更できませんでした PasswordNotChangedException: " + customerDTO.toString());
            "changePassword" を返します。
    } キャッチ (PasswordNotSecureException e) {
        "changePassword" を返します。
    }
    return createRedirectViewPath("changePassword");
}

私たちの問題は、changePassword が呼び出されると、バリデーターがグループ (PasswordChange.class) を無視し、グループにない firstName と lastName のみを検証することです。

何か案が?どうぞよろしくお願いいたします。

4

1 に答える 1

1

検証順序に問題がある可能性がありますか?( http://docs.oracle.com/cd/E19798-01/821-1841/gkahp/index.html)-- >グループ検証のカスタマイズ 注文は間違いなくそのように聞こえます!

于 2013-02-04T08:03:26.443 に答える