WizardForm весной 3 - PullRequest
       20

WizardForm весной 3

0 голосов
/ 01 февраля 2011

Я нашел код с форумов Spring, который кажется интересным способом реализации wizardForms в Spring 3:

@RequestMapping(method = RequestMethod.POST)
public ModelAndView processSubmit(
@ModelAttribute("pet") Pet pet,
SessionStatus status) {
    if (pet.getFieldOne() == null) {
        //return the form that will set field one's value
        return new ModelAndView( ... );
    } else if (pet.getFieldTwo() == null) {
        //return the form that will set field two's value
        return new ModelAndView( ... );
    } //and so on for all the other field that need to be set...
    ...
    else {
        //once the object has all necessary fields
        //set and validated, then do what needs
        //to be done to finish. Store object, end
        //session, and return your success view.
        this.clinic.storePet(pet);
        status.setComplete();
        return new ModelAndView( ... );
    }
}

Может кто-нибудь сказать мне, что означает хранение здесь, и это хороший способ?

1 Ответ

0 голосов
/ 01 февраля 2011

Если под «хранением» вы подразумеваете this.clinic.storePet(pet);, это действие по сохранению всего объекта в вашей базе данных после завершения работы мастера, так что оно полностью не связано с реализацией мастера.

Сам подход является стандартным способом реализации форм-мастеров в Spring 3, который заменяет устаревший AbstractWizardFormController.

Обратите внимание, что также требуется @SessionAttribute("pet") в качестве аннотации на уровне класса. Эта аннотация заставляет Spring сохранять соответствующий атрибут модели в сеансе между запросами, так что каждая отправка формы устанавливает поля одного и того же объекта. Когда все поля установлены и мастер завершен, объект сохраняется в базе данных и удаляется из сеанса с помощью status.setComplete();.

...