WizardForm在Spring 3中

时间:2011-02-01 09:42:17

标签: forms spring-mvc wizard

我从Spring论坛找到了一个代码,它似乎是在Spring 3中实现wizardForms的一种有趣的方式:

@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 :(得分:0)

如果通过“存储”表示this.clinic.storePet(pet);,则表示在向导完成时将完整对象保存在数据库中的操作,这与向导实现完全无关。

该方法本身是在Spring 3中实现向导表单的标准方法,它取代了已删除的AbstractWizardFormController

请注意,它还需要@SessionAttribute("pet")作为类级别注释。此注释使Spring在请求之间的会话中存储相应的模型属性,以便每个表单提交设置同一对象的字段。设置完所有字段并完成向导后,对象将保存到数据库,并由status.setComplete();从会话中删除。