快速业务通道

Spring MVC向导控制器 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18

Spring MVC向导控制器

时间:2011-03-14 陈雄华

概述

假设某一个系统在用户注册模块中需要区别一般用户和高级用户,一般用户只要提供最简单的信息,通过一个小表单就可以搞掂了。但对于需要注册为高级用户的客户来说,论坛希望他们提供详细的注册信息,除了用户名、密码、Email这些最简单的信息外,还需要提供住址、电话以及兴趣爱好之类的调查信息。通过一张大表单让注册者一次性填写所有这些信息并不是一个好主意,大部分潜在的用户当看到这样面目狰狞的“超级表单”后都会毫不犹豫的放弃注册。这时通过一个向导式的表单让用户分步填写注册信息将是明智的方案,虽然需要填写的信息量不变,但心理学的经验告诉我们,用户会在第一感觉简单的心理暗示下慢慢进入我们设下的“麦田圈套”中。

高级用户注册所需填写的信息分解到3个表单中,并以向导方式分步完成:

1) 填写用户名、密码、Email等一般的信息;

2) 填写地址、电话等联系的信息;

3) 填写用户兴趣爱好的调查信息。

在其它MVC框架中开发向导式的表单并非易事,因为你需要考虑表单前进、后退、中途退出,表单分步骤校验,数据维护等诸多的问题。幸运的是,在Spring MVC中,你不必躬身考虑这种底层工作流程的细节,AbstractWizardFormController已经编制好了向导表单的工作流程并将那些需要你确定的步骤开放出来,你只需要通过扩展现成的AbstractWizardFormController通过很少的工作,一个功能强大的向导表单就大功告成了。

我们打算通过以下页面流程完成高级用户注册的操作:

图 1 注册高级用户向导页面流程

创建注册高级用户的向导控制器

我们构建一个向导控制器,它必须继承AbstractWizardFormController类,FullUserRegisterController负责为注册高级用户提供基本的向导控制器,其代码如下所示:

代码清单 1 FullUserRegisterController:向导控制器 

package com.baobaotao.web.user; … import org.springframework.web.servlet.mvc.AbstractWizardFormController; public class FullUserRegisterController extends AbstractWizardFormController { private String cancelView; ① 点击取消后转向的视图(逻辑视图名) private String successView; ② 向导最终处理成功后转向的成功页面 private BbtForum bbtForum; public void setBbtForum(BbtForum bbtForum) { this.bbtForum = bbtForum; }

③ 负责处理最后表单提交的动作

protected ModelAndView processFinish(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) throws Exception { FullUser fullUser = (FullUser) command; bbtForum.registerFullUser(fullUser); ③-1转向welcome.jsp页面 return new ModelAndView(getSuccessView(), "fullUser", fullUser); } ④负责处理取消的动作 protected ModelAndView processCancel(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) throws Exception { return new ModelAndView(getCancelView());④-1转向main.jsp页面 } //省略get/setter }

Spring MVC向导控制器(2)

时间:2011-03-14 陈雄华

AbstractWizardFormController唯一必须实现的方法是processFinish()方法,在用户完成整个向导的提交后,这个方法被调用执行。在FullUserRegisterController中,processFinish()方法将FullUser对象传递给BbtForum业务对象,保存高级用户的注册信息,然后转向到注册成功后的欢迎页面。你可以有选择地实现processCancel()方法,该访问负责处理取消的动作。向导链中的页面都提供一个可以让用户中途退出

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号