Java反射机制与struts1.1结合运用遇到的问题!

04-04-12 javaclass
在struts-config.xml中可定义动态form如下:

<form-bean name="LoginForm" type="org.apache.struts.action.DynaActionForm" dynamic="true" >

<form-property name="username" type="java.lang.String" />

<form-property name="password" type="java.lang.String" />

</form-bean>

<form-bean name="CompanyDetailForm" type="org.apache.struts.action.DynaActionForm" dynamic="true" >

<form-property name="companyName" type="java.lang.String" />

<form-property name="url" type="java.lang.String" />

<form-property name="city" type="java.lang.String" />

<form-property name="country" type="java.lang.String" />

<form-property name="phone" type="java.lang.String" />

<form-property name="email" type="java.lang.String" />

</form-bean>

同样在database中我们可以定义对应的表

table user(username, password)

table company(companyName, url, city, country, phone, email)

----------------------------------------------------------------

一般情况下在装载Form对象时通过取得rs记录后以如下形式装载:

userForm.set("username", rs.getString("username"));

.......

comForm.set("companyName", rs.getString("companyName"));

.........

----------------------------------------------------------------

请问各位大侠,在当form和表很多的情况下,如果通过java反射机制达到自动装载数据对象,良好的代码封装重用等,

万分感激!

javaclass
2004-04-12 11:01
<form-bean name="LoginForm" type="org.apache.struts.action.DynaActionForm" dynamic="true" >
  <form-property name="username" type="java.lang.String" />
  <form-property name="password" type="java.lang.String" />
</form-bean>
<form-bean name="CompanyDetailForm" type="org.apache.struts.action.DynaActionForm" dynamic="true" >
  <form-property name="companyName" type="java.lang.String" />
  <form-property name="url" type="java.lang.String" />
  <form-property name="street" type="java.lang.String" />
  <form-property name="city" type="java.lang.String" />
  <form-property name="country" type="java.lang.String" />
  <form-property name="zip" type="java.lang.String" />
  <form-property name="phone" type="java.lang.String" />
  <form-property name="email" type="java.lang.String" />
</form-bean>
<p>

banq
2004-04-12 11:30
你是想让后台的数据表和前台的struts的数据封装合二为一吗?

javaclass
2004-04-12 16:12
是的。

本来应该是让数据表与数据模型(中间层也就是JavaBean实体对象),原则上不应该让web form与数据表操作关联。但现在想简单起见,就在struts-config.xml中定义动态form,然后通过写具体sql语句查询得到rs记录集,运用java的反射机制达到set×××,get×××自动的目的。

wildfox
2004-04-20 11:54
我有一个想法,如果有什么不妥之处,请大家不吝指正

两个HashMap

nameValueMap存放属性名称(property-name)、对应数据(value)

nameTypeMap 存放属性名称(property-name)、对应类型(type 如java.lang.String)

假如有一个属性名称为("userName"),类行为"java.lang.String"从resultSet中取出值的时候,直接用rs.getObject("userName"), 放入nameValueMap中 nameValueMap.put("userName", rs.getObject("userName"));当要用到该属性的致的时候,先从nameTypeMap中取出他的类型 Class type = (Class)nameTypeMap.get("userName");然后把从nameValueType中取出的相应的值转换成该类型返回,当然要注意到NullPointerException, 当然我这样做有个缺点,就是对primitive 数据处理还需要改进

猜你喜欢
2Go 1 2 下一页