最近实现一个command模式,需要将web端的formbean作为参数传至EJB端,考虑到EJB端存取参数的一致性,故将
formbean动态组装成map,具体代码如下:
(1)下面是一个简单的bean
package cn.com.webmaker;
public class PersonBean extends BaseBean {
private String name;
private String age;
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
(2)下面是 PersonBean 继承的BaseBean,只有一个toHashMap方法
package cn.com.webmaker;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.HashMap;
public class BaseBean {
/**
* 根据字段值动态组装map
*
* @return
*/
public HashMap toHashMap() {
HashMap map = new HashMap();
Class c = this.getClass();
// 根据子类声明的field循环取值
for (int i = 0; i < c.getDeclaredFields().length; i++) {
try {
// 获取field
Field f = c.getDeclaredFields()[i];
String key = f.getName();
// 执行对应的get方法
String method = "get" + key.substring(0, 1).toUpperCase() + key.substring(1);
Class pTypes[] = new Class[0];
Method myMethod = c.getMethod(method, pTypes);
Object[] arg = new Object[0];
Object res = myMethod.invoke(this, arg);
// 保存
map.put(key, res);
} catch (Exception e) {
// 返回空
return null;
}
}
return map;
}
}
(3)测试方法
package cn.com.webmaker;
public class test {
public static void main(String[] args) {
PersonBean pb = new PersonBean();
pb.setName("ccc");
pb.setAge("25");
System.out.println(pb.toHashMap().toString());
}
}
程序输出预期的 {age=25, name=ccc}
分享到:
- 2007-11-05 19:23
- 浏览 1146
- 评论(0)
- 论坛回复 / 浏览 (0 / 2045)
- 查看更多
相关推荐
在Java Web开发中,动态验证FormBean是一种常见的实践,它允许开发者在运行时根据不同的业务需求灵活地定义和改变表单验证规则。本教程将深入探讨动态验证FormBean的概念、优势以及实现方法。 动态验证FormBean的...
在这个例子中,我们将深入探讨如何在Struts1.2中实现动态FormBean并添加验证功能。 首先,让我们理解什么是动态FormBean。在传统的Struts1应用中,每个ActionForm Bean都是一个Java类,它对应于HTML表单的字段,并...
本话题将围绕如何在Java中使用这些库来读取JSON数据并进行FormBean的操作进行详细讲解。 首先,我们需要理解FormBean的概念。FormBean是Java Web开发中的一个术语,通常用于封装HTML表单提交的数据,以便在服务器端...
D 动态FormBean不能进行验证操作 答案:A 8.以下哪些不是Hibernate的检索方式: A、导航对象图检索 B、OID检索 C、ORM检索 D、QBC检索 E、本地SQL检索 F、HQL检索 答案:C 9.以下代码定义了一个变量,如何...
FormBean是Struts中的一个重要概念,它充当了模型层与视图层之间的桥梁,用于存储用户的输入数据。本篇文章将深入探讨在Struts中FormBean的日期类型字段如何进行赋值以及自动转化。 一、FormBean的概念与作用 ...
反射是Java的一种强大特性,允许程序在运行时动态地获取类的信息(如方法、属性等)并进行操作。`FormBeanUtil`会遍历表单提交的所有参数,找到对应的Bean属性,并将值设置进去,从而实现数据的自动绑定。 三、...
Beanutils用了魔术般的反射技术,实现了很多夸张有用的功能,都是C/C++时代不敢想的。无论谁的项目,始终一天都会用得上它。我算是后知后觉了,第一回看到它的...4.5 动态Bean 见用DynaBean减除不必要的VO和FormBean
本主题将深入探讨如何使用JavaScript实现表格的行列动态添加,以及在formbean中定义属性为String数组的关联概念。 首先,我们需要了解HTML中的`<table>`元素和其子元素`<tr>`(行)、`<td>`(单元格)的基本用法。...
`dynamicProperties`是一个Map,用于存储表单的所有动态字段及其值。 接下来,在Action类(如`DynFormAction`)中,你可以根据需要动态地创建和填充这些表单字段。例如,可以从数据库中获取字段信息,然后将它们...
本文详细介绍了Struts框架中的一些核心概念和技术点,包括FormBean的数据传递、数组和集合的迭代展示、动态生成带有参数的HTML链接、使用`<html:select>`和`<html:multibox>`创建交互式控件等。通过这些技术点的学习...
3. **ModelDriven接口**:ModelDriven接口允许Action类依赖于一个模型对象,这个模型对象可以直接与动态FormBean关联,简化了业务逻辑和视图之间的交互。 总的来说,掌握Struts的这些高级特性,能够帮助开发者更...
ActionForm的property必须声明然后才可以使用,不过在查询时我们常常需要输入一些查询条件,这些查询条件(property)其实不需要在formbean中声明,可以使用Map对象来封装整个查询表单提交的数据。 4. ActionForm的...
FormBean如下 public class FormBean { public static Object makeBean(HttpServletRequest request,Class<?> clazz){ Object result = null; try { result=clazz.newInstance(); Field [] fields ...
方式一:通过 FormBean 实现数据传递 在 Struts 中,我们可以通过 FormBean 来实现数据由 HTML 到 Action 之间的传递。FormBean 是一个特殊的 JavaBean,它可以将 HTML 表单中的数据封装起来,并将其传递给 Action...
Hibernate作为ORM(Object-Relational Mapping)工具,允许动态生成PO,并且支持PO的状态管理,使得PO在一定程度上可以替代VO。然而,这并不意味着PO应该跨越边界进入Web层。即使Hibernate提供了这样的便利,仍然...
ActionForm分为静态和动态两种类型,静态FormBean通常用于固定不变的数据输入,而动态FormBean则适用于数据结构不固定或需要动态生成的情况。在增删查改操作中,Action会根据不同的请求调用相应的Service,然后返回...
转换成对应的FormBean实例,并填充其属性。 2. 在FormBean中,会调用reset方法,将FormBean的属性恢复到初始状态,确保每次 处理请求前,FormBean处于一个干净的状态。 3. 随后,调用FormBean的setter方法,根据HTTP...
4. **创建FormBean**:如果请求中包含表单数据,ActionServlet会创建一个FormBean实例,将请求参数填充到FormBean中。FormBean通常用来存储用户的输入数据,以便在后续处理中使用。 5. **调用ActionBean**:Action...