Переход от команды формы к сохраненной сущности с проверкой в ​​веб-приложении Spring 3 - PullRequest
0 голосов
/ 26 октября 2010

У меня есть форма для создания пользователя и соответствующий объект команды.Это выглядит так:

public class CreateUserForm {
    private String name;
    private String email;
    private String password1;
    private String password2;
    private Boolean enabled = true;

    ... getters and setters ...
}

У меня есть объект сущности пользователя, который должен быть создан и сохранен на основе ввода формы.Сущность имеет аннотированные правила проверки и выглядит следующим образом:

@Entity
public class SiteUser {
    @Id
    private String id;

    @NotEmpty
    private String name;

    @NotEmpty
    @Email
    private String email;

    @NotEmpty
    @Pattern(regexp="^[a-zA-Z0-9_]{6,20}$")
    private String password;

    @NotEmpty
    private Boolean enabled;

    ... getters and setters ...
}

Ввод формы должен по существу иметь те же правила проверки, за исключением того факта, что ввод формы должен проверять, если password1 и password2поля идентичны

Моя первая мысль - добавить те же аннотации проверки к объекту формы и создать специальный валидатор, который проверяет, совпадают ли поля password1 и password2.Тем не менее, я чувствую, что не делаю что-то правильно, помещая одни и те же правила проверки в два очень похожих объекта.

Поэтому я ищу любой совет о том, как консолидировать процесс проверки и хранения.моя сущность на основе формы ввода.

Ответы [ 2 ]

0 голосов
/ 26 октября 2010

Вы можете сделать что-то вроде этого:

public class CreateUserForm { 
    @Valid
    private SiteUser user;
    private String confirmPassword;
    ...
}

и убедитесь, что confirmPassword.equals(user.getPassword()) вручную.

Обновление:

Проверка вручную выглядит следующим образом:

@RequestMapping(...)
public String createUser(@Valid CreateUserForm form, BindingResult result) {
    if (!form.getConfirmPassword().equals(form.getUser().getPassword())) {
        result.rejectValue("confirmPassword", ...);
    }
    ...
}

Вы также можете реализовать пользовательское ограничение JSR-303 для проверки подтверждения пароля вместе с другими полями, но я думаю, что в этом случае это излишне.

0 голосов
/ 26 октября 2010

Почему вы не используете объект домена (например, SiteUser) в своем пользовательском интерфейсе? Таким образом, вам не придется дублировать логику.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...