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的日期类型字段如何进行赋值以及自动转化。 一、FormBean的概念与作用 FormBean是Struts中的一种特殊Java类,用于封装HTTP请求中的参数。它们通常继承自`org.apache.struts....
### Struts 1.x 在MVC架构中的角色与工作流程详解 #### Struts 概述与MVC设计模式实现 Struts是Apache软件基金会赞助的一个开源项目,它为基于Java的Web应用程序提供了一种实现MVC(Model-View-Controller)设计...
### 详解Struts1的配置文件 #### 一、引言 在Java Web开发中,Struts...理解这些配置的原理和用法,对于掌握Struts1框架来说至关重要。希望本文能够帮助开发者更好地利用Struts1配置文件来构建高效稳定的Web应用程序。
在验证过程中,ActionForm的属性会被赋值并进行验证。Action是控制层的组件,它处理ActionForm中的数据,执行业务逻辑,并决定跳转到哪个视图。 **五、实践操作** 在本实例中,`MyValidate`可能是一个ActionForm的...
模仿Struts的Servlet可能也提供了类似的机制,通过注解或者配置文件,可以自动将请求参数赋值给Servlet中的对象属性,简化了数据处理的步骤。 为了实现这个功能,Servlet可能使用了以下技术: 1. 请求参数解析:...
Struts框架的核心组件包括ActionServlet、ActionForm、Action和JSP视图等。 **Hibernate ORM框架** Hibernate是一个流行的Java ORM框架,它简化了数据库操作,使得开发者可以用面向对象的方式来处理数据。Hibernate...
Struts 是一个经典的Java Web开发框架,主要用于构建MVC(Model-View-Controller)架构的应用程序。赖家才老师的课堂总结深入浅...通过赖家才老师的讲解,我们可以更好地掌握Struts1的工作原理,提升Java Web开发能力。
在给定的例子中,`<bean:define>`标签将`listForm`中的`persons`属性赋值给`values`,并将其类型声明为`java.util.List`。这使得后续的标签或JSP脚本可以直接操作这个列表,而无需显式调用ActionForm的方法。 总之...
1. **了解基本概念**:首先理解Struts框架的工作原理和标签库的基本构成。 2. **实践案例**:通过StrutsTagPrj项目,动手创建简单的JSP页面,使用Struts标签处理表单数据和控制流程。 3. **深度探索**:研究标签库的...
Struts1.x 版本是其早期版本,尽管现在已经被Struts2取代,但在许多遗留系统中仍然广泛使用。 入门学习Struts1.x,首先要做的就是下载Struts框架。你可以从Apache官方网站获取Struts的主页,并找到相应的下载页面。...
Struts会遍历请求参数,通过反射找到对应的ActionForm属性,然后进行赋值。 **JSON与Struts的结合** 在现代Web应用中,前后端分离的趋势越来越明显,JSON成为前后端数据交换的主要手段。在Struts中,我们通常会...
- 使用`setter`方法对ActionForm中的属性进行赋值。 - 根据配置信息决定是否需要进行表单验证。如果需要,则调用ActionForm的`validate()`方法进行验证。 - 如果表单验证成功(即`validate()`方法返回的`...
- **ActionForm 实例化与赋值**: - 在 JSP 页面中,可以使用 EL 表达式 `${}` 或 `<bean:message>` 来获取 ActionForm 中的数据。 - 在 Action 中可以通过调用 `get` 方法来获取表单数据。 - 使用 `User user = ...
10. **bean:struts**:提供对Struts框架内部对象的访问,例如ActionForm、ActionMapping等。 **HTML Tags**: 1. **html:base**:设置页面的基础URL,用于处理相对链接,确保重定向和资源引用的正确性。 2. **...
在Struts中,MVC模式以控制器为核心,ActionForm作为数据传输的载体,它在用户请求和业务逻辑之间起到桥梁作用。ActionForm执行步骤包括映射检查、实例查找、属性赋值、验证等,确保数据的有效性和安全性。 Struts...
在Java开发中,Struts框架和反射都是常用于处理数据绑定和对象操作的重要工具。本文将深入探讨这两种技术,特别是它们在自动装填前台数据方面的相似性。 首先,让我们了解Struts框架。Struts是一个开源的MVC(Model...
Struts Logic标签库是Apache Struts框架的一部分,用于在JSP页面中实现逻辑控制和流程管理。这些标签简化了在视图层处理条件判断、循环和请求转发等任务,使得开发者能够更专注于业务逻辑,而不是复杂的Java代码。...
本文将详细介绍`struits-config.xml`中的关键配置项,并解释其工作原理和应用场景。 #### 二、关键配置项解析 1. **Action 配置** - **path** (必须) - 用于定义Action的访问路径,例如`...
1. **Struts工作原理**:Action,Form,DispatcherServlet,配置文件详解。 2. **ActionMapping**:映射请求到特定的Action。 3. **Tiles**:用于页面布局,组合多个组件。 4. **Interceptor**:拦截器的概念,生命...
在Struts中,ActionForm对象通常用于封装用户输入的数据,而Action类处理这些数据并调用业务逻辑。然后,Struts会使用Velocity模板来渲染响应。通过在Velocity模板中引用ActionForm或Action上下文中的属性,开发者...