0

我有两个单独的模型AccountDetailsFormAccountDetails,前者用于表单提交,后者用于持久性。

AccountDetailsForm:

public class AccountDetailsForm {

    private AccountDetails accountDetails;

    @NotNull
    private String confirmPassword;

    //setter and getters
}

和帐户详细信息:

@Entity
@Table(name = "ACCOUNT")
public class AccountDetails {

    @Id
    @Column(name = "USER_NAME")
    @NotEmpty
    @Max(value = 60)
    private String userName;


    @Column(name = "PASSWORD")
    @NotEmpty
    @Min(value = 8)
    private String password;

   //setters and getters
}

现在我正在使用以下方法验证提交的表单@Valid

@RequestMapping(value="userRegistration", method = RequestMethod.POST)
public ModelAndView registerUser(@Valid AccountDetailsForm accountDetailsForm, BindingResult result,Model model){

    //I autowire localValidatorFactoryBean to validate the fields in AccountDetails bean.
    localValidatorFactoryBean.validate(accountDetailsForm.getAccountDetails(), result);

    if (result.hasErrors()){
        model.addAttribute("accountDetailsForm", new AccountDetailsForm());
        model.addAllAttributes(result.getModel());
        return new ModelAndView("userRegistration");
    }

我正在使用休眠进行持久化。@Valid有没有办法使用而不是显式调用validate()方法或使用 spring 验证器实现来验证 accountDetails bean ?

我不介意听到有关confirmPassword解决方法的建议。confirmPassoword我正在遵循当前的方法,因为在模型中有一个字段没有意义。

4

2 回答 2

1

放入对象:@Valid_AccountDetailsAccountDetailsForm

public class AccountDetailsForm {

    @Valid
    private AccountDetails accountDetails;

    @NotNull
    private String confirmPassword;

        //setter and getters
}

当在你的控制器中被AccountDetailsForm验证时,也将被验证。@ValidAccountDetails

参考例子在这里

于 2012-08-23T08:05:05.560 回答
0

查看注释内的组字段:您可以指定要应用的依赖类。这里可能是这样的:

@Valid(groups=AccountDetails.class)

使用 maven,我目前在 Spring MVC 3.1 项目中使用这些版本的库:

springframework 3.1.2.RELEASE
javax.validation 1.0.0.GA
hibernate-validator-annotation-processor 4.1.0.Final
于 2012-08-23T10:57:29.663 回答