快速业务通道

用Spring MVC来处理向导式复杂表单 - 编程入门网

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

六. 分步显示向导中的表单页面

任何向导控制器显示的第一个页面都是 pages 属性中列表的第一个页面。其后为了判断接下来的是哪个页面, AbstractWizardFormController 询问它的 getTargetPage() 方法。这个方法返回一个整数,它就是 pages 和中设置页面列表的索引值。

getTargetPage() 方法的缺省实现是根据请求中的一个参数来决定下一步是哪个页面的,这个参数以 "_target" 开头,以数结尾。getTargetPage() 只取这个数字作为页面列表的索引。一般我们会把该参数命名给相应的提交按钮。例如我们在第二个页面 /resume/baseinfo.jsp 中的“上一步”,“下一步” 按钮的 html 代码这样写:

<form action="/createResume.html" method="post"> ...... <input type="submit" value="上一步" name="_target0"> <input type="submit" value="下一步" name="_target2"> </form>

七. 完成或取消向导

那么AbstractWizardFormController 又是如何知道你点击的是完成按钮,要调用 processFinish() 方法处理表单数据,或是点了取消按钮,要调用 processCancel() 来作些清理工作或作部分数据处理呢?它也是依据于特殊的请求参数,它们分别是 “_finish” 和 “_cancel”。因此,相应的 html 代码就要写成:

<form action="/createResume.html" method="post"> ...... <input type="submit" value="完成" name="_finish"> <input type="submit" value="取消" name="_cancel"> </form>

八. 每次验证一个向导表单

对于这种向导式页面,如果你仍是在最后点完成按钮来验证所有表单数据的话,一旦某个数据有问题,你将很难定位是在哪个向导页输入的,并且转向到哪个出错页面也麻烦。所以我们需要在每填完一个表单,点击 “下一步” 或“完成”按钮时立即就对当前表单数据进行验证。

AbstractWizardFormController 在每次页面跳转时会调用它的 validatePage() 方法。而 validatePage() 方法缺省实现是空的,这要留给你来实现。AbstractWizardFormController 中有两个重载的 validatePage() 方法,代码分别如下:

protected void validatePage(Object command, Errors errors, int page) { } protected void validatePage(Object command, Errors errors, int page, boolean finish) { validatePage(command, errors, page); }

用Spring MVC来处理向导式复杂表单(6)

时间:2011-09-09

你可以选择实现其中一个方法来对表单进行验证。如果你希望在点击“完成” 按钮时,能作一些特别的验证,例如,如多个表单的相关联数据进行一致性检查,那你就应该实现带有 boolean finish 参数的 validatePage() 方法。

最好是把验证逻辑单独写在一个实现了 Validator 接口的验证类中,通过 validator 属性配置给你的 ResumeWizardFormController,然后在 validatePage() 方法中取到这个 validator,再调用其中的验证方法 validateXXX()。例如我们前面配置在 resume-servlet.xml 中的 com.unmi.webapp.validator.ResumeValidator。

注意,对于 AbstractWizardFormController,它不会调用配置给它的 validator 的标准的validate() 方法。在点击“下一步”按钮,即向导正向走时,若验证不通过,则停留在当前页,等待重新输入。然而,当点击“上一步”按钮时,也就是页面索引号递减,向导逆向

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号