1,当在action中写入一个sql语句后,比如 select employee, department, salary from company where status = 1;后,返回的是一个object集合,当我需要把这个集合request.setAttribute到前台之后我开始试图把这三个属性,代码如下(进入死胡同过程)
EntityClass ec = new EntityClass();
List result = dao.find(sql);
Object[] obj = (Object[])result.get(0);
List<EntityClass> ecList = new ArrayList<EntityClass>();
for(int i=1; i<=obj.length; i++){
if(i % 3 == 0){
ec.setEmployee(obj[i-1]);
ecList.add(ec);
ec = new EntityClass();
} else if(i%2 == 0 && i % 3 != 0){
ec.setDepartment(obj[i-1]);
} else {
ec.setSalary(obj[i-1]);
}
}
request.setAttribute("listItem", ecList);
前台:
<c:foreEach items=${listItem} var=item>
<tr>
<td>
${item.employee}
</td>
<td>
${item.department}
</td>
<td>
${item.salary}
</td>
</tr>
</c:foreEach>
====================================================
上面的代码往死里想都不对折腾了大概一个多小时,这段时间是最痛苦的
其实正确的代码是
当从dao层获取这个object集合之后立马把这个返回即可,代码如下
request.setAttribute("listItem", query);
前台
<c:foreach items="listItem" var="item">
<tr>
<td>${item[0]}</td>
<td>${item[1]}</td>
<td>${item[2]}</td>
</tr>
</c:foreach>
=================================================
这个几分钟就解决了,逻辑也十分正确,当得知可以这样后我立马有一种想吐血的感觉,写这么长算是对我的一种教训吧,希望我记住。