日期:2014-05-17  浏览次数:20750 次

dwr的问题,高手请进!
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数据的一些问题吗?

------解决方案--------------------
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的。
------解决方案--------------------
探讨

问题解决了
public List<Bm> getBms(String param){
String sql = "select * from bm ";
Bm bm = new Bm();//问题出在这里,这句应该放在循环体里面,否则即使后台没什么问题,dwr却认为集合里面都是同一个对象
List<Bm> bms = new ArrayList<Bm>();
try {
conne……

------解决方案--------------------
恩,是的。