关于这个问题可能每个人有自己的解决办法。
但如果要按照struts的风格来做,应该是这样的:
1) 自己写个类(假定为datamap),这个类继承hashmap,并实现dynabean
2) 将resultset中的数据取出填充到这个datamap中
3)将多条数据(也就是多个datamap)填到一个arraylist
4) 将这个arraylist放到你的actionform中
5)在jsp中引用, 仿照 struts-example中的例子引用。
例如:
<logic:iterate id=”subscription” name=”user” property=”subscriptions”>
<tr>
<td align=”left”>
<bean:write name=”subscription” property=”host” filter=”true”/>
</td>
<td align=”left”>
<bean:write name=”subscription” property=”username” filter=”true”/>
</td>
<td align=”center”>
<bean:write name=”subscription” property=”type” filter=”true”/>
</td>
<td align=”center”>
<bean:write name=”subscription” property=”autoconnect”/>
</td>
</tr>
</logic:iterate>
这里subscriptions就是刚才讲的 那个arraylist
user是actionform的名字
subscription就是你那个datamap的实例,代表一条记录
那些property实际上就是字段名了。
本贴对您是否有帮助? 投票: 是 否 投票结果: 0 0
———————————————————–
看到很多朋友在问这个问题,我愿意再重复一遍。希望能对大家有用
下面是我在回答 “单选框如何用? 发表时间: 2003-3-10 下午7:20 “
时的参考代码,很有代表性。现略作改动(下面的所有代码都经过实际验证)
这是一个最小实现:
后台处理代码:
////////////////////////
resultset rs = …
resultsetmetadata rsmd = rs.getmetadata();
int columncount = rsmd.getcolumncount();
arraylist rows = new arraylist();
while(rs.next()) {
hashmap row = new hashmap();
for (int i = 1; i <= columncount; i++) {
string name = rsmd.getcolumnname(i);
row.put(name, rs.getobject(i));
}
rows.add(row);
}
///////////////////////////
request.setattribute(“rows”,rows); //将包装好的arraylist放到request里以便jsp使用。
注意 ////之间的代码其实可作为公用代码,写到组件里去
(传入resultset做参数,返回包装好的arraylist)
前台处理代码:假设这是一个单选框
<logic:iterate id=”row” name=”rows”>
<html:radio property=”roleid” value=”id” idname=”row”/>
<bean:write name=”row” property=”roledesc”/>
</logic:iterate>
前台注释:
第1行 这里name=”rows”就是后台setattribute的名字 id=”row”是给出循环里要引用每一行的标识
第2行 这里property=”roleid”是html表单的变量名
value=”id” 是字段的名字
idname=”row” 就是第1行的id的值
第3行 这里name=”row” 就是第1行的id的值 property=”roledesc”是字段名
如果是要显示这个resultset的记录,方法就跟 struts例子里的基本一样了:
<logic:iterate id=”row” name=”rows”>
<tr>
<td>
<bean:write name=”row” property=”host”/>
</td>
<td>
<bean:write name=”row” property=”username”/>
</td>
<td>
<bean:write name=”row” property=”type”/>
</td>
<td>
<bean:write name=”row” property=”autoconnect”/>
</td>
</tr>
</logic:iterate>
这里的各项属性意义与上一样。
需要提醒的是:因为我们是将记录集放到request中的,所以这个<logic:iterate标签中不需要使用property属性,struts的例子是把这个记录集放到actionform中所以
在他的例子中<logic:iterate的name是actionform的名字,property是在actionform中定义的记录集(就是我们上面的rows)的名字了.
用struts这样的表示方式还有一些另外的好处,例如可以用bean:write的 format属性
格式化字段的值,这是我们经常要用到的功能,象格式化日期和数字等。
通过这个例子大家可以做到举一反三的效果,凡是需要用到数据库中记录集的地方都可以依此类推,
想下拉表单,多选框等等。