Проверка формы Spring с дополнительными полями - PullRequest
0 голосов
/ 04 марта 2012

Я пишу приложение со средой Spring, и у меня есть вопрос, как выполнить проверку формы с дополнительными полями.

Я новичок в этом, но насколько я понимаю, чтобы заполнить форму с помощьюform: form tag Я устанавливаю атрибут с помощью

@RequestMapping(value = "/register", method = RequestMethod.GET)
public String register(Model model) {

    model.addAttribute("tenant", new Tenant());                     
    return "register";
}

Затем создайте класс валидатора и используйте его для запроса POST:

@RequestMapping(value = "/register", method = RequestMethod.POST)
public String registerPost(@ModelAttribute("tenant") Tenant tenant, 
                    Model model,
                    BindingResult result) {

    TenantValidator validator = new TenantValidator();
    validator.validate(tenant, result);  
    if (result.hasErrors()) { 
        return "register"; 
    } 

    tenantService.save(tenant);
    return "redirect:accountOverview";
}

Он работает очень хорошо, и я восхищен тем, насколько это удобноis!

Единственная проблема - что мне делать с дополнительными полями?Например, у меня есть поле «повторить пароль».Если я создаю дополнительные поля без использования тегов, а также используя и проверяю их напрямую, я не смог бы использовать:

<form:errors path="repeatPassword>

тег, поскольку 'repeatPassword' не является членом объекта формы.

Первое решение, которое приходит на ум, - это создать специальный объект формы TenantDTO, который будет содержать эти дополнительные поля, и при сохранении просто перенести данные в 'Tenant' (объектный компонент).

Это хороший подход?Каковы лучшие практики в этой ситуации?

Спасибо!

Леонтий

1 Ответ

0 голосов
/ 04 марта 2012

Вы все еще можете иметь эти значения в объекте формы. Я думаю, вы не хотите сохранять их в базе данных. Вы можете избежать этого, используя аннотацию Transient (http://docs.oracle.com/javaee/5/api/javax/persistence/Transient.html).). Это даст вам возможность использовать отображение пути, имея в форме объект и выполнив всю проверку, но все еще не сохраняя в базе данных. Надеюсь, это поможет.

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