私には2つの別々のモデルがAccountDetailsForm
ありAccountDetails
、前者はフォームの送信用で、後者は永続性用です。
AccountDetailsForm:
public class AccountDetailsForm {
private AccountDetails accountDetails;
@NotNull
private String confirmPassword;
//setter and getters
}
およびAccountDetails:
@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");
}
永続性のためにHibernateを使用しています。@Valid
メソッドを明示的に呼び出したり、Spring Validator実装を使用したりするのではなく、accountDetails Beanを検証する方法はありvalidate()
ますか?
回避策の提案を聞いてもかまいませんconfirmPassword
。confirmPassoword
モデルにフィールドを含めるのは意味がないため、現在のアプローチに従っています。