数据验证以及ActionError
|
创建一个数据验证逻辑对任何应用来说都是一个重要的和花费时间的部分。幸运的是,Struts提供了一个易用的、强大的方法来为你处理它们。 这个功能分为两部分: l 提供一个易用的方法,在发现错误时捕获它的信息。 l 向View组件标记信息可用,其方式对View组件访问和在需要时显示这些信息都非常容易。 Struts框架提供了两个类来辅助你: l ActionError 这个类被用来表现一个单一的验证错误。 l ActionErrors 这个类提供了一个空间来保存所有你创建的单个的ActionError对象。当你创建ActionError对象时,你仅需要简单地把它们填充到一个ActionErrors容器,然后继续处理。 这两个类解决了如下问题:ActionError类使得捕获错误变得非常容易,并且对你编写代码也非常便利。ActionErrors类存储若干ActionError,并且使它们对你的JSP文件来说更容易获得。 Hello World!应用已经被定义为含有两个不同类型的错误:基本的数据/表单验证错误,以及业务逻辑错误。这两个类型的需求是: l 表单验证——在数据项表单中,确认用户没有在person字段为空时提交表单。 l 业务逻辑——强制规则,就是用户不可以向被许可的人说Hello。(因为Atilla Hun有非常不好的名声,让我们指定他为不想对话的人) 注意 将错误分为两种类型仅仅是为了演示的目的。这使我们有可能展示错误在表单Bean以及在Action类中的处理(将在下一节介绍)。 在实践中,将验证错误分为这样两种类别也并不少见。根据应用程序的实际情况,可以做出你自己的选择。 第一个验证(数据/表单验证)类型在表单Bean中完成。下面的代码是从HelloForm.java提取的代码片断,演示了这种类型: public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { ActionErrors errors = new ActionErrors(); if ((person == null) || (person.length() < 1)) errors.add("person", new ActionError("ch01.hello.no.person.error")); return errors; } 如果validate()方法返回一个空的ActionErrors对象,Struts就认为没有错误,同时处理则移向Action类。如果ActionErrors含有任何一个ActionError元素,用户将被重定向到一个合适的页面来改正错误。 如果处理被重定向,以使用户修正数据项,ActionErrors对象带着若干单个的ActionError元素,回到View来进行显示。View组件可以直接或者通过 标记来访问ActionErrors 。 验证的启用与禁止,可以在Struts配置文件中一个页面一个页面地进行设置。 |