У меня есть две отдельные модели AccountDetailsForm
и AccountDetails
, первая для отправки формы, а вторая для сохранения.
Форма Детали Аккаунта:
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");
}
Я использую спящий режим для настойчивости. Есть ли способ проверить bean-компонент accountDetails с помощью @Valid
вместо явного вызова метода validate()
или использования реализации весеннего валидатора?
Я не против услышать предложения по обходному пути confirmPassword
. Я следую текущему подходу, потому что не имеет смысла иметь в модели поле confirmPassoword
.