`

Struts 学习笔记之ActionForm

阅读更多

Struts 学习笔记之ActionForm

 

Struts 中定义了一些JavaBeans,主要是以ActionForm为父类扩展开来的,如下图:

 

actionform.JPG 

org.apache.struts.action包中

public abstract class ActionForm implements Serializable

public class DynaActionForm extends ActionForm implements DynaBean

 

org.apache.struts.validator包中

public class ValidatorForm extends ActionForm implements Serializable

public class DynaValidatorForm extends DynaActionForm

implements DynaBean, Serializable

 

org.apache.struts.validator包中

public class ValidatorActionForm extends ValidatorForm implements Serializable

public class DynaValidatorActionForm extends DynaValidatorForm

    implements DynaBean, Serializable

 

1 ActionForm中比较常用的两个方法是reset()validator()

// 恢复ActionForm属性的默认值,如把boolean型设为true/false,字符串设为null

public void reset( ActionMapping mapping, HttpServletRequest request ) { }

// validate 只检查数据格式和语法,不检查数据是否符合业务逻辑。

public ActionErrors validate( ActionMapping mapping, HttpServletRequest request ) { return (null); }

这两个方法的默认实现是不执行任何操作,我们可以重写这两个方法来实现相关逻辑。

 

注: 对于每个request,控制器都会先调用ActionFormreset()方法,然后表单数据组装到ActionForm中。如ActionFormrequest范围内,那么对于每个新的request请求都会创建新的ActionForm实例。新实例创建后,如果它的属性已经被初始化为默认值,那么接着再在reset()方法中把属性设为默认值不是很有必要,这时可以让reset()方法为空。

 

对于session范围内的ActionForm,同一ActionForm实例会被多个请求共享,reset()方法在这种情况下极为有用。

 

2 . 其中,ActionForm需要我们创建一个formbean类继承ActionForm,在ActionForm中可以定义一些propertyget/set方法。

ActionForm property必须声明然后才可以使用,不过在查询时我们常常需要输入一些查询条件,这些查询条件(property)其实不需要在formbean中声明,这时可以使用Map对象来封装整个查询表单提交的数据,如下:

public class MapForm extends ActionForm {

    private Map map = null;

    public void setMap(Map map) {

        this.map = map;

    }

    public Map getMap() {

        return this.map;

    }

    // 增加查询条件(property)的get/set方法,并把数据放到Map

    public void setAttribute(String attributeKey, Object attributeValue) {

        map.put(attributeKey, attributeValue);

    }

    public Object getAttribute(String attributeKey) {

        Object keyValue = map.get(attributeKey);

        return keyValue;

    }

}

 

在页面上可以通过

来获取表单数据,这会调用getAttribute("id")方法。

 

3 . 其中,Dyna开头的动态ActionForm不需要创建具体的ActionForm类,只需通过Struts的配置文件就可以完成ActionForm的全部配置,如:

DynaActionForm">

   

   

 

4 . 其中,含有validatorActionForm用来进行表单验证,验证方法有两种。

 

struts-config.xml中设置actionvalidate属性为"true"(默认为"true"),

        type="com.cn.lively.action.UpdateUserAction"

        name="userForm"

        scope="request"

        input="/jsp/updateUser.jsp"

        cancellable="true"

        validate="true" >

   

 

并且在相应的formbean中重写其中的validate方法,在validate方法中实现自己的数据验证逻辑。

 

通过validation框架进行验证,这分为两步:

struts-config.xml中配置validation插件,

   

                  value="/org/apache/struts/validator/validator-rules.xml,

                         /WEB-INF/validation.xml" />

 

配置formbean,有下面两种方法:

 

使自己的formbean类继承含有validatorActionForm

public class UserForm extends ValidatorForm{

    private String userName;

    public String getUserName() {

        return userName;

    }

    public void setUserName(String userName) {

        this.userName = userName;

    }

}

并配置struts-config.xml文件:

userForm" type="com.cn.lively.formbean.UserForm">

 

使自己的formbean类继承含有validatorDynaValidatorForm

userForm" type="org.apache.struts.validator.DynaValidatorForm">

   

 

配置validation.xml文件:

   

userForm">

       

           

       

   

 

注: 注意 validation.xml文件中的userFormstruts-config.xml文件中formbean的名字。

 

关于arg的几个属性如下:

bundle :指定资源文件名,如不指定,则从默认资源文件中读取

key :从资源文件 ActionResources.properties 中得到的值

resource key所指定的信息是否来自外部的资源文件,默认为true。如果为true,则代表keybuddle属性所指定的资源文件中的key

position ,这个arg中的值用来替换信息中的哪一部分, 需要替换的部分以{n}标志。

 

5 . 关于ValidatorForm/DynaValidatorFormValidatorActionForm/DynaValidatorActionForm之间的区别

 

对于一个actionform,可以被多个action所使用,而每个action可能需要的验证字段都不一样,而validation.xml中配置的验证方式(如

)是对这个formbean进行的.

 

如果需要针对每个action来验证,则必须使formbean继承ValidatorActionForm(或者直接配置DynaValidatorActionForm)。如下两种方法:

使自己的formbean类继承含有validatorActionForm

public class UserForm extends ValidatorActionForm{

    ……

}

并配置struts-config.xml文件:

userForm" type="com.cn.lively.formbean.UserForm">

 

    /createUser"

            type="com.cn.lively.action.CreateUserAction"

            name="userForm"/>

    /updateUser"

            type="com.cn.lively.action.UpdateUserAction"

            name="userForm"/>

 

使自己的formbean类继承含有validatorDynaValidatorActionForm

userForm" type="org.apache.struts.validator.DynaValidatorActionForm">

   

 

    /createUser"

            type="com.cn.lively.action.CreateUserAction"

            name="userForm"/>

    /updateUser"

            type="com.cn.lively.action.UpdateUserAction"

            name="userForm"/>

 

配置validation.xml文件:

   

/createUser">

       

           

       

   

   

/updateUser">

       

           

           

                                  position="1" />

           

                maxlength

                10

           

       

   

 

注: 注意validation.xml文件中的/createUser/updateUserstruts-config.xml文件中actionpath路径。

 

如果我们查看struts源码,可以很清楚的看到ValidatorForm/DynaValidatorFormValidatorActionForm/DynaValidatorActionForm之间的区别

ValidatorForm 中的方法

* @return validation key - the form element's name in this case

public String getValidationKey(ActionMapping mapping,

        HttpServletRequest request) {

        return mapping.getAttribute();  // 返回formbean的名字

}

 

分享到:
评论

相关推荐

    [摘]Struts 学习笔记之ActionForm

    博客文章"Struts学习笔记之ActionForm - xiaodaoxiaodao——蓝小刀的自言自语 - BlogJava.mht"可能包含更深入的实践示例和经验分享,包括如何处理ActionForm的生命周期、动态Form Beans、国际化等话题。通过阅读这篇...

    Struts_学习笔记之ActionForm

    Struts学习笔记之ActionForm ActionForm是Struts框架中的一种重要组件,用于封装和处理用户的表单数据。在Struts中,ActionForm是继承自JavaBeans的,主要用于处理用户的表单数据和业务逻辑。下面是ActionForm的...

    struts2学习笔记(完美总结)——转自OPEN经验库

    ValueStack是一个对象栈,它持有ActionContext上下文中的所有对象,包括Action实例、ActionForm、Session、Request等。OGNL通过ValueStack进行数据查找和操作,简化了视图层的数据绑定。 **五、Tags** Struts2提供...

    struts学习笔记(四)

    在本“Struts学习笔记(四)”中,我们将会深入探讨Struts框架的核心概念、工作原理以及如何实际运用到项目开发中。 首先,Struts框架的核心目标是提供一个结构化的开发环境,将业务逻辑、数据处理和用户界面有效地...

    j2ee平台框架Struts学习笔记

    Struts是Java EE平台上的一款流行开源MVC框架,...学习Struts不仅有助于理解MVC模式,也能为其他类似的Web框架打下坚实的基础。通过深入研究和实践,开发者可以充分利用Struts的特性,构建出高效、稳定的Web应用程序。

    Struts1及14. Struts2学习笔记

    本学习笔记将对Struts1和Struts2进行详细解析。 **Struts1简介** Struts1是早期流行的MVC框架,它的核心是ActionServlet,负责处理HTTP请求,并通过ActionForm对象收集表单数据,然后调用Action类的方法进行业务...

    MVC框架struts学习笔记

    `struts-config.xml` 是Struts的核心配置文件,定义了Action、ActionForm和ActionForward等信息。 **请求驱动的MVC框架**: 像Struts这样的框架是基于请求驱动的,根据URI决定调用哪个Action类来处理请求。Action...

    struts学习笔记

    "Struts学习笔记"显然是一个针对Struts框架深入学习的资料集合,旨在帮助初学者从基础开始,逐步掌握Struts的核心概念和实践技巧。 在学习Struts的过程中,有几个关键知识点是必须理解的: 1. **MVC模式**:MVC是...

    Struts 学习笔记

    本篇学习笔记将深入探讨Struts的核心概念、工作原理以及如何在实际项目中应用Struts来构建高效、可维护的Web应用程序。 一、Struts框架概述 Struts作为经典的MVC框架,它为Java开发者提供了一种组织应用程序逻辑的...

    Struts学习笔记

    Struts是Java Web开发中的一个开源框架,它主要用于构建基于MVC(模型-视图-控制器)模式的应用程序。...不过,这只是Struts学习的一个起点,深入掌握还需要不断实践和探索更多的高级特性和最佳实践。

    Struts1学习笔记总结.pdf

    Struts1学习笔记总结 Struts1是一种基于MVC模式的Web应用框架,它可以帮助开发人员快速构建高效、可维护的Web应用程序。下面是对Struts1学习笔记的总结,涵盖了Struts1的基本概念、工作流程、标签、国际化等方面的...

    Struts 1.3.8 学习笔记(二)

    这个版本的学习笔记主要集中在 Struts 框架的基础知识、架构和核心组件上,帮助开发者更好地理解和应用这个经典版本。在这个笔记中,我们将深入探讨 Struts 的工作原理、配置以及它如何简化 MVC(模型-视图-控制器)...

    struts2学习笔记

    ### Struts2学习笔记知识点详解 #### 一、基础知识 **1. Struts2核心组件** - **XWork-2.0.5.jar**: 引入WebWork框架的核心功能,这是Struts2的一个重要组成部分,提供了请求处理的核心逻辑。 - **Commons-...

Global site tag (gtag.js) - Google Analytics