dwr的问题,高手请进!

cong19900904 2012-03-07 09:02:36
public class Bmdao {

private DBConnect connect;

public Bmdao() {
connect = new DBConnect();
}

public List<Bm> getBms(String param){
String sql = "select * from bm ";
Bm bm = new Bm();
List<Bm> bms = new ArrayList<Bm>();
try {
connect.excuteQuery(sql);
while(connect.next()){
bm.setBmid(connect.getInt("bmid"));
bm.setBmmc(connect.getString("bmmc"));
bm.setSjbmid(connect.getInt("sjbmid"));
bm.setSx(connect.getInt("sx"));
bm.setBmyxbz(connect.getInt("bmyxbz"));
bm.setBz(connect.getString("bz"));
bms.add(bm);
System.out.println(bm.getBmmc());
}
System.out.println(bms.size()+"--------------");
return bms;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}

}
dwr配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://www.getahead.ltd.uk/dwr/dwr20.dtd">
<dwr>
<allow>
<create creator="new" javascript="bmdao">
<param name="class" value="com.bm.dao.Bmdao" />
<include method="getBms"></include>
</create>

<convert match="com.bm.bean.Bm" converter="bean">
<param name="include" value="bmid,bmmc,sjbmid,sx,bmyxbz,bz" />
</convert>

</allow>
</dwr>
前台调用:function getData() {
bmdao.getBms("aa",showData);
}
function showData(data) {
if (data != null) {
d = new dTree('d','/bm/tree/');
for(var i=0;i<data.length;i++){
d.add(data[i].bmid, data[i].sjbmid, data[i].bmmc, null, null, null);
alert(data[i].bmmc);//这里循环alert出来的是数据都是同一个,数据库的数据是不一样的,java文件里打印出来的数据正常
}
为什么会这样子?是我忽略了dwr接受list数据的一些问题吗?
...全文
89 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
水草有根 2012-03-07
  • 打赏
  • 举报
回复
恩,是的。
昨日凡阳 2012-03-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cong19900904 的回复:]

问题解决了
public List<Bm> getBms(String param){
String sql = "select * from bm ";
Bm bm = new Bm();//问题出在这里,这句应该放在循环体里面,否则即使后台没什么问题,dwr却认为集合里面都是同一个对象
List<Bm> bms = new ArrayList<Bm>();
try {
conne……
[/Quote]
cong19900904 2012-03-07
  • 打赏
  • 举报
回复
问题解决了
public List<Bm> getBms(String param){
String sql = "select * from bm ";
Bm bm = new Bm();//问题出在这里,这句应该放在循环体里面,否则即使后台没什么问题,dwr却认为集合里面都是同一个对象
List<Bm> bms = new ArrayList<Bm>();
try {
connect.excuteQuery(sql);
while(connect.next()){
bm.setBmid(connect.getInt("bmid"));
bm.setBmmc(connect.getString("bmmc"));
cong19900904 2012-03-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 iisgirl 的回复:]
for(var i=0;i<data.length;i++){
d.add(data[i].bmid, data[i].sjbmid, data[i].bmmc, null, null, null);
alert(data[i].bmmc);//这里循环alert出来的是数据都是同一个,数据库的数据是不一样的,java文件里打印出来的数据正常
}


for循环换成java的jstl标……
[/Quote]
还是不行,继续求救
昨日凡阳 2012-03-07
  • 打赏
  • 举报
回复
for(var i=0;i<data.length;i++){
d.add(data[i].bmid, data[i].sjbmid, data[i].bmmc, null, null, null);
alert(data[i].bmmc);//这里循环alert出来的是数据都是同一个,数据库的数据是不一样的,java文件里打印出来的数据正常
}


for循环换成java的jstl标签,foreach试试。别用js的。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧