`
wangyanlong0107
  • 浏览: 495049 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

【转】struts1 中ActionForm赋值原理

 
阅读更多

在struts1中,当点击submit页面提交后, 由 ActionServlet交给RequestProcessor的processPopulate()方法, 由processPopulate()方法收集请求数据,放在map中,key为表单域的name属性,如 name, account.name, stocks[0].code. 然后借助于 Common-beanutils 工具包设置到 ActionForm 的相应属性中,struts对ActionForm中的数据赋值也是从这个map里取值的。比如:

     1:如果key是简单的'userName',直接form.setUserName(map.get('userName'));

     2:如果key是'user.userName', 执行的操作是 form.getUser().setUserName(map.get ('user.userName');

     3:如果key是'list[0].userName', 它可以对应到数据或集合中,如对于数组 form.list[0]. name=map.get('list[0].userName'); 对于集合(List) form.getList().get(0).setUserName (map.get('list[0].UserName'))

     4:如果有多个input以相同的 名字'userName'  ActionForm 直接将其视为一个String数组 (这个数组声明用时不用初始化不用将其初始化)

      根据上面的可以看出,在ActionForm中如果有对象或列表的话,必须要初始化,拿2来说吧,如果有一个User user;对象,User里有两个属性:userName和passWord。struts1赋值是通过form.getUser().setUserName(map.get('user.userName'));但是User没有初始化,form.getUser()就会报空指针异常。

      对于一个普通的对象,直接初始化就好了,但是对于一个list来说,最好写一个通过的生成list里面对象的一个类,因为每加一条记录就要增加一个对象,如果像普通对象在类似构造方法里加的话就比较麻烦,所以最好用一个java的回调的功能(Class对象),新写一个类专门用于生成这个list中的对象。具体的也比较简单如用ArrayList来写一个如下:

import java.util.ArrayList;

public class AutoArrayList extends ArrayList {

    private Class itemClass;

    public AutoArrayList(Class itemClass) {

               this.itemClass = itemClass;

    }

    public Object get(int index) {

              try{

                while(index >= size()) {

                      add(itemClass.newInstance());

                 }

              }catch(Exception _ex) {

                  _ex.printStackTrace();

              }

     return super.get(index);

     }

}

      在ActionForm中就可以初始化了,比如: private List list = new AutoArrayList(User.class); 在Action中的操作就比较简单了。。。

分享到:
评论

相关推荐

    Struts中FormBean的日期类型字段赋值自动转化

    本篇文章将深入探讨在Struts中FormBean的日期类型字段如何进行赋值以及自动转化。 一、FormBean的概念与作用 FormBean是Struts中的一种特殊Java类,用于封装HTTP请求中的参数。它们通常继承自`org.apache.struts....

    Struts1.x.pdf

    ### Struts 1.x 在MVC架构中的角色与工作流程详解 #### Struts 概述与MVC设计模式实现 Struts是Apache软件基金会赞助的一个开源项目,它为基于Java的Web应用程序提供了一种实现MVC(Model-View-Controller)设计...

    详解struts1的配置文件.doc

    ### 详解Struts1的配置文件 #### 一、引言 在Java Web开发中,Struts...理解这些配置的原理和用法,对于掌握Struts1框架来说至关重要。希望本文能够帮助开发者更好地利用Struts1配置文件来构建高效稳定的Web应用程序。

    struts1.2框架验证实例

    在验证过程中,ActionForm的属性会被赋值并进行验证。Action是控制层的组件,它处理ActionForm中的数据,执行业务逻辑,并决定跳转到哪个视图。 **五、实践操作** 在本实例中,`MyValidate`可能是一个ActionForm的...

    模仿struts的servlet

    模仿Struts的Servlet可能也提供了类似的机制,通过注解或者配置文件,可以自动将请求参数赋值给Servlet中的对象属性,简化了数据处理的步骤。 为了实现这个功能,Servlet可能使用了以下技术: 1. 请求参数解析:...

    struts自定义标签详解

    在给定的例子中,`<bean:define>`标签将`listForm`中的`persons`属性赋值给`values`,并将其类型声明为`java.util.List`。这使得后续的标签或JSP脚本可以直接操作这个列表,而无需显式调用ActionForm的方法。 总之...

    struts和hibernate注册

    Struts和Hibernate是Java开发中两个非常重要的框架,它们分别在MVC(Model-View-Controller)模式和对象关系映射(ORM)领域扮演着关键角色。本篇将深入探讨这两个框架以及它们如何协同工作来实现数据库的简单插入...

    传智播客 赖家才老师 主讲 struts1 的课堂总结

    Struts 是一个经典的Java Web开发框架,主要用于构建MVC(Model-View-Controller)架构的应用程序。赖家才老师的课堂总结深入浅...通过赖家才老师的讲解,我们可以更好地掌握Struts1的工作原理,提升Java Web开发能力。

    STRUTS标签讲解案例

    1. **了解基本概念**:首先理解Struts框架的工作原理和标签库的基本构成。 2. **实践案例**:通过StrutsTagPrj项目,动手创建简单的JSP页面,使用Struts标签处理表单数据和控制流程。 3. **深度探索**:研究标签库的...

    Struts +json

    Struts会遍历请求参数,通过反射找到对应的ActionForm属性,然后进行赋值。 **JSON与Struts的结合** 在现代Web应用中,前后端分离的趋势越来越明显,JSON成为前后端数据交换的主要手段。在Struts中,我们通常会...

    struts面试宝典

    - 使用`setter`方法对ActionForm中的属性进行赋值。 - 根据配置信息决定是否需要进行表单验证。如果需要,则调用ActionForm的`validate()`方法进行验证。 - 如果表单验证成功(即`validate()`方法返回的`...

    Struts标签文档

    Struts是Java Web开发中的一个核心框架,由Apache Jakarta维护,它旨在简化MVC(Model-View-Controller)架构的应用程序开发。Struts通过提供一套丰富的标签库,使得开发者能够更方便地创建用户界面和控制应用程序...

    struts 整合笔记

    - **ActionForm 实例化与赋值**: - 在 JSP 页面中,可以使用 EL 表达式 `${}` 或 `<bean:message>` 来获取 ActionForm 中的数据。 - 在 Action 中可以通过调用 `get` 方法来获取表单数据。 - 使用 `User user = ...

    使用反射自动装填前台数据和struts自动装填很像

    在Java开发中,Struts框架和反射都是常用于处理数据绑定和对象操作的重要工具。本文将深入探讨这两种技术,特别是它们在自动装填前台数据方面的相似性。 首先,让我们了解Struts框架。Struts是一个开源的MVC(Model...

    StrutsSpringHibernate基本知识

    在Struts中,MVC模式以控制器为核心,ActionForm作为数据传输的载体,它在用户请求和业务逻辑之间起到桥梁作用。ActionForm执行步骤包括映射检查、实例查找、属性赋值、验证等,确保数据的有效性和安全性。 Struts...

    struts tag

    Struts Logic标签库是Apache Struts框架的一部分,用于在JSP页面中实现逻辑控制和流程管理。这些标签简化了在视图层处理条件判断、循环和请求转发等任务,使得开发者能够更专注于业务逻辑,而不是复杂的Java代码。...

    Struts_config.xml详解

    本文将详细介绍`struits-config.xml`中的关键配置项,并解释其工作原理和应用场景。 #### 二、关键配置项解析 1. **Action 配置** - **path** (必须) - 用于定义Action的访问路径,例如`...

    java,struts,js等面试题大全

    1. **Struts工作原理**:Action,Form,DispatcherServlet,配置文件详解。 2. **ActionMapping**:映射请求到特定的Action。 3. **Tiles**:用于页面布局,组合多个组件。 4. **Interceptor**:拦截器的概念,生命...

    velocity1

    在Struts中,ActionForm对象通常用于封装用户输入的数据,而Action类处理这些数据并调用业务逻辑。然后,Struts会使用Velocity模板来渲染响应。通过在Velocity模板中引用ActionForm或Action上下文中的属性,开发者...

Global site tag (gtag.js) - Google Analytics