Chinaunix首页 | 论坛 | 博客
  • 博客访问: 685450
  • 博文数量: 845
  • 博客积分: 5000
  • 博客等级: 大校
  • 技术积分: 5015
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-15 16:22
文章分类

全部博文(845)

文章存档

2011年(1)

2008年(844)

我的朋友

分类:

2008-10-15 16:36:09

  一、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");取得资源文件里面的键值,用于页面的输出。

  2、 打开applicationResource.properties,加入如下信息:

  loginform.error.username=please enter your username

  loginform.error.password=please enter your password

  因为我们前面做了国际化,所以打开applicationResource_zh_CN.properties文件,添加如下:

  loginform.error.username=请输入用户名

  loginform.error.password=请输入密码

  3、 修改struts-config.xml文件

  path="/login"

  name="loginActionForm"

  scope="request"

  type="actions.LoginAction"

  validate="true"

  input="/login.jsp">

  在元素中,name和scope属性分别指定ActionForm的名字和它的范围,valudate属性指定是否执行表单验证,而input属性表示验证失败,所要显示用户的内容。

  4、 修改login.jsp,在元素添加,目的是显示错误信息,具体代码片段如下:

  :用于输出消息。属性介绍如下:

  n name:指定ActionMessages对象存放在request或session范围内的属性key。标签处理类将根据这一属性key来检索request或session范围的ActionMessages对象。

  n message属性:指定消息的来源。如果为true,则从request或session范围内检索出属性key为Globals.MESSAGE_KEY的ActionMessages对象,此时name属性无效;如果为false,则根据name属性来检索ActionMessage对象,如果此时没有设置name属性,将采取默认值Globals.ERROR_KEY.message属性的默认值为false。

  n id属性:用来命名从消息中检索出来的每个ActionMessage对象,它和标签的name属性匹配。

  :表示显示javaBean或其属性的内容。

  5、 运行

  打开IE,键入如下地址:

  不输入任何东西,我们直接点几击“确定”,如下:

  

[1]     

【责编:Chuan】

--------------------next---------------------

阅读(414) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~