我有两个单独的模型AccountDetailsForm
和AccountDetails
,前者用于表单提交,后者用于持久性。
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
我正在遵循当前的方法,因为在模型中有一个字段没有意义。