快速业务通道

Apache Geronimo和Spring框架,第5部分: Spring MVC - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
DataProvider(IPhonebookDataProvider pbDataProvider) {      this.pbDataProvider = pbDataProvider;    } }

正如您所见,清单 4 中的代码与为主页控制器执行的操作没有什么不同。这里惟一的改变是在表单打 开时返回一个空命令对象,因为在表单打开时无需填充任何数据。此外,这里添加了处理 onSubmit 事件 的逻辑,因为在执行此操作时需要把条目添加到数据库中。在将用户输入保存到数据库中之前先验证用户 输入不是很好么?请继续学习并引入 PhonebookEntryValidator 类来具体执行此操作。

引入 PhonebookEntryValidator

使用此类的惟一一个目的是验证用户在 Add Entry 页面中输入的数据。您立刻就会认识到添加数据验 证代码并将验证错误作为对象返回是多么地干净和轻松。清单 5 显示了 PhonebookEntryValidator 类的 代码。

清单 5. 用于处理数据验证的验证类

public class PhonebookEntryValidator implements Validator {    public boolean supports(Class clazz) { return clazz.equals(PhonebookEntry.class); }    public void validate(Object o, Errors errors) {      validatePhonebookEntry((PhonebookEntry)o, errors);    }    public void validatePhonebookEntry(PhonebookEntry pbEntry, Errors errors)  {      if ("".equals(pbEntry.getFirstName()) || pbEntry.getFirstName() == null)  {        errors.rejectValue("firstName",null, "First name cannot be empty");        }      if ("".equals(pbEntry.getLastName()) || pbEntry.getLastName() == null)  {        errors.rejectValue("lastName",null, "Last name cannot not be  empty");        }    } }

Apache Geronimo和Spring框架,第5部分: Spring MVC(9)

时间:2011-10-13 IBM Arun Chhatpar

根据 Spring MVC 规范,验证类需要实现 Validator 接口。清单 5 中定义的类就是这样做的。在这 里,最重要的方法是 supports() 方法,它用于确保此验证程序仅用于您的命令对象 (PhonebookEntry) 。

validate 方法是需要添加验证代码的位置。名字和姓氏不允许为空。validate 方法将收到一个已与 表单绑定的命令对象和一个 Errors 对象。通过 Errors 对象可以拒绝用户已经输入的值。注意, rejectsValue 方法的第一个参数应当与命令对象的对应属性完全匹配。Spring 将使用反射 API 把错误 与对应的 Command 对象属性直接关联起来。

下一步将向您展示如何将此验证程序动态地注入 addEntry 控制器中。

让应用程序上下文知道用于 addEntry 的新控制器的存在

下一步是更改 phonebook-servlet.xml 文件以映射这个新控制器的 URL。清单 6 中突出显示了该配 置中的重要行。

清单 6. 在应用程序上下文文件中添加 addEntryFormController 的配置

<bean id="urlMapping"   class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">      <property name="mappings">        <props>            <prop key="/*.do">phonebookController</prop>            <prop key="/*.htm">phonebookFlowController</prop>            <prop key="/*.flow">phonebookFlowController</prop>            <prop key="/addentry-mvc.act">addEntryFormController

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