首页 / 软件开发 / JAVA / Struts从零开始五、Struts中验证数据实例
Struts从零开始五、Struts中验证数据实例2011-08-05一、Struts的ActionForm的表单验证ActionForm类用于在视图层和控制层之间传递HTML表单数据。控制层可以从ActionForm Bean中读取用户输入的表单数据,也可以把来自模型层的数据存放到ActionForm Bean中,然后把数据返回给视图。即ActionForm Bean从HTML表单中获取用户输入的数据并将传递给Action类,也可以把从业务层返回的数据用来填充ActionForm Bean,然后JSP页面用它来为HTML表单提供各种输出字段的数据。此外,ActionForm Bean还具有表单验证功能,可以过路不合法的数据。ActionForm Bean有两种存在范围:request和session。如果ActionForm Bean存在于request范围,它仅在当前的请求/响应生命周期中有效。如果ActionForm Bean存在于session范围,同一个ActionForm Bean实例在整个HTTP会话中都有效。在Struts框架中,使用ActionForm Bean来实现应用程序系统的非持久性数据存储和维护功能,它采用了自动填充属性和调用的机制。所以必须继承ActionForm类,并且包涵用户表单输入的属性,以及相应的get方法和set方法。另外,还可以根据需要重写父类的reset()和validate()方法,实现属性的重置和表单数据验证功能。validate()方法这个方法主要负责检查数据的格式和语法,而不负责检查数据是否符合业务逻辑。ActionForm基类中的validate()方法在默认情况下将返回null。如果创建了ActionForm的子类,那么应该在子类覆盖validate()方法。reset()方法这个方法用于恢复ActionForm Bean 的属性的默认值。例如:把字符串属性设为null或某个初始值。1、修改前面我们写的LoginActionForm,如果你不清楚的话,请您先看前几个实例,具体代码如下:public ActionErrors validate(ActionMapping actionMapping,
HttpServletRequest httpServletRequest) {
ActionErrors errors = new ActionErrors();
if (username == null|| username.equals("")) {
errors.add(ActionErrors.GLOBAL_MESSAGE,
new ActionError("loginform.error.username"));
}
if (userpass == null||userpass.equals("")) {
errors.add(ActionErrors.GLOBAL_MESSAGE,
new ActionError("loginform.error.password"));
}
return errors;
}这个方法返回ActionErrors对象,如果返回的ActionErrors对象为null,或者不包含任何ActionMessage对象,就表示没有错误,数据验证通过。如果ActionErrors中包含ActionMessage对象,就表示发生了验证错误,此时就回把请求转发到你struts.xml里面元素input属性指定的web资源。new ActionError("loginform.error.username");取得资源文件里面的键值,用于页面的输出。