`

struts1 中ActionForm赋值原理

 
阅读更多

http://gyl868.iteye.com/blog/445473

 

 

在struts1中,没有struts2封装得好,对简单数据类型没有什么不一样,但是对于一个对象,列表等要麻烦一点,不过只要知道struts1底层是怎么对数据进行赋值的话,操作起来也比较简单。

        首先说明一下在struts1中,当点击submit后,把表单中的数据全部提交,在后台是用一个Map来接收表单中的数据,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'))
     根据上面的可以看出,在ActionForm中如果有对象或列表的话,必须要初始化,拿2来说吧,如果有一个User user;对象,User里有两个属性:userName和passWord。struts1赋值是通过 form.getUser().setUserName(map.get('user.userName'));但是User没有初始化,form.getUser()就会报空指针异常。
      对于一个普通的对象,直接初始化就好了,但是对于一个list来说,最好写一个通过的生成list里面对象的一个类,因为每加一条记录就要增加一个对象,如果像普通对象在类似构造方法里加的话就比较麻烦,所以最好用一个java的回调的功能(Class对象),新写一个类专门用于生成这个list中的对象。具体的也比较简单如用ArrayList来写一个如下:
view plaincopy to clipboardprint?

   1. import java.util.ArrayList; 
   2.  
   3.  
   4. public class AutoArrayList extends ArrayList 
   5. { 
   6.     private Class itemClass; 
   7.      
   8.     public AutoArrayList(Class itemClass) 
   9.     { 
  10.         this.itemClass = itemClass; 
  11.     } 
  12.      
  13.     public Object get(int index) 
  14.     { 
  15.         try{ 
  16.             while(index >= size()) 
  17.             { 
  18.                 add(itemClass.newInstance()); 
  19.             } 
  20.         }catch(Exception _ex) 
  21.         { 
  22.             _ex.printStackTrace(); 
  23.         } 
  24.          
  25.         return super.get(index); 
  26.     } 
  27. } 

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);
}
}

view plaincopy to clipboardprint?

   1. 在ActionForm中就可以初始化了,比如: 

在ActionForm中就可以初始化了,比如:

view plaincopy to clipboardprint?

   1. private List list = new AutoArrayList(User.class); 

private List list = new AutoArrayList(User.class);

view plaincopy to clipboardprint?

   1. 在Action中的操作就比较简单了。。。 

在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和hibernate注册

    Struts框架的核心组件包括ActionServlet、ActionForm、Action和JSP视图等。 **Hibernate ORM框架** Hibernate是一个流行的Java ORM框架,它简化了数据库操作,使得开发者可以用面向对象的方式来处理数据。Hibernate...

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

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

    struts自定义标签详解

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

    STRUTS标签讲解案例

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

    struts的入门学习

    Struts1.x 版本是其早期版本,尽管现在已经被Struts2取代,但在许多遗留系统中仍然广泛使用。 入门学习Struts1.x,首先要做的就是下载Struts框架。你可以从Apache官方网站获取Struts的主页,并找到相应的下载页面。...

    Struts +json

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

    struts面试宝典

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

    struts 整合笔记

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

    Struts标签文档

    10. **bean:struts**:提供对Struts框架内部对象的访问,例如ActionForm、ActionMapping等。 **HTML Tags**: 1. **html:base**:设置页面的基础URL,用于处理相对链接,确保重定向和资源引用的正确性。 2. **...

    StrutsSpringHibernate基本知识

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

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

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

    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