刚上手struts,遇这样一个问题,有一张“存储表”,里面有一个ISBN字段,根据这个字段能找到很多条记录,每一条记录有一个id,根据这个id到“仓库表”查找address字段,存储表中的每一条记录连同每一个对应的address要用一个foreach循环在前台展示出来
具体代码如下:
后台业务逻辑
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws UnsupportedEncodingException { // TODO Auto-generated method stub HttpSession session = request.getSession();
Session s = HibernateUtil.currentSession();
StockForm stockForm = (StockForm) form;
String ISBN = stockForm.getISBN();
request.setAttribute("ISBN", ISBN);
System.out.println(ISBN);
Stock stock;
try {
HibernateUtil.beginTransaction();
String str = new String();
str = " from Stock stock where stock.ISBN = '" + ISBN+ "'";
int i=s.createQuery(str).list().size();
System.out.println(i);
List list=s.createQuery(str).list();
request.setAttribute("list", list);
Iterator it = list.iterator();
Integer id = null;
while (it.hasNext()){
stock = (Stock) it.next();
id =stock.getWarehouseid();
String str1 = " from Warehouse warehouse where warehouse.id = '" + id+ "'";
List list1=s.createQuery(str1).list();
String address = "";
request.setAttribute("list1", list1);
for(int i1=0;i1<list1.size();i1++){
Warehouse wh= new Warehouse();
wh=(Warehouse)list1.get(i1);
address=wh.getAddress();
System.out.println(address);
request.setAttribute("wh", wh);
}
}
return mapping.findForward("return");
} catch (HibernateException e) {
e.printStackTrace();
} finally {
s.close();
} ActionMessages errors = new ActionMessages();
errors.add("login error", new ActionMessage("login.error"));
saveErrors(request, errors);
return mapping.getInputForward(); }
}前台显示页面代码如下<c:forEach items="${list}" var="list" > <tr>
<td height="22" align="center"><font color="#000000"><c:out value="${list.entertime}"/></font></td>
<td height="22" align="left">
<span class="STYLE8"></span><span class="STYLE8">快件【</span><font color="blue"><c:out value="${list.ISBN}"/></font><span class="STYLE8">】已到<c:out value="${wh.address}"/> </span>
<span class="STYLE8"></span><span class="STYLE8">派件员【</span><font color="blue"><c:out value="${list.in_employeeid}"/></font><span class="STYLE8">】已进行入库登记</span>
</td>
<td height="22" align="center"><font color="#000000"><c:out value="${list.outtime}"/></font></td>
<td height="22" align="left">
<span class="STYLE8"></span><span class="STYLE8">派件员【</span><font color="blue"><c:out value="${list.out_employeeid}"/></font><span class="STYLE8">】已进行出库登记</span>
</td>
</tr>
</c:forEach>
其他的都显示没问题,主要是address同步这个地方,显示出来的都是最后一条字段的值,恳请各位高手多多指点!
具体代码如下:
后台业务逻辑
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws UnsupportedEncodingException { // TODO Auto-generated method stub HttpSession session = request.getSession();
Session s = HibernateUtil.currentSession();
StockForm stockForm = (StockForm) form;
String ISBN = stockForm.getISBN();
request.setAttribute("ISBN", ISBN);
System.out.println(ISBN);
Stock stock;
try {
HibernateUtil.beginTransaction();
String str = new String();
str = " from Stock stock where stock.ISBN = '" + ISBN+ "'";
int i=s.createQuery(str).list().size();
System.out.println(i);
List list=s.createQuery(str).list();
request.setAttribute("list", list);
Iterator it = list.iterator();
Integer id = null;
while (it.hasNext()){
stock = (Stock) it.next();
id =stock.getWarehouseid();
String str1 = " from Warehouse warehouse where warehouse.id = '" + id+ "'";
List list1=s.createQuery(str1).list();
String address = "";
request.setAttribute("list1", list1);
for(int i1=0;i1<list1.size();i1++){
Warehouse wh= new Warehouse();
wh=(Warehouse)list1.get(i1);
address=wh.getAddress();
System.out.println(address);
request.setAttribute("wh", wh);
}
}
return mapping.findForward("return");
} catch (HibernateException e) {
e.printStackTrace();
} finally {
s.close();
} ActionMessages errors = new ActionMessages();
errors.add("login error", new ActionMessage("login.error"));
saveErrors(request, errors);
return mapping.getInputForward(); }
}前台显示页面代码如下<c:forEach items="${list}" var="list" > <tr>
<td height="22" align="center"><font color="#000000"><c:out value="${list.entertime}"/></font></td>
<td height="22" align="left">
<span class="STYLE8"></span><span class="STYLE8">快件【</span><font color="blue"><c:out value="${list.ISBN}"/></font><span class="STYLE8">】已到<c:out value="${wh.address}"/> </span>
<span class="STYLE8"></span><span class="STYLE8">派件员【</span><font color="blue"><c:out value="${list.in_employeeid}"/></font><span class="STYLE8">】已进行入库登记</span>
</td>
<td height="22" align="center"><font color="#000000"><c:out value="${list.outtime}"/></font></td>
<td height="22" align="left">
<span class="STYLE8"></span><span class="STYLE8">派件员【</span><font color="blue"><c:out value="${list.out_employeeid}"/></font><span class="STYLE8">】已进行出库登记</span>
</td>
</tr>
</c:forEach>
其他的都显示没问题,主要是address同步这个地方,显示出来的都是最后一条字段的值,恳请各位高手多多指点!
解决方案 »
- 启动android模拟器 一直停留在ANDROID_界面 ,那个下划线一直闪,,
- Struts1报错,no type for /user/login
- tomcat 6 移植到 jboss 5问题多多
- 做个搜索功能时,在搜到的记录上突出关键字的颜色
- hibernate.hbm2ddl.auto 属性设置为true,但是不能生成数据库表
- 一个异常的问题.
- Strurs连接sql数据库问题,请高手帮忙
- 求免费可用的电视预告webservic服务
- 请问如何在RedHat9下安装J2se1.31 SDK
- 为什么的的的鼠标监听器没反应啊!!!求大神解·····
- 下周公司要组织web service培训,以前没怎么接触过web service,请用过的高手介绍下
- hibernate如何执行非标准的sql
所以你实际上总是用后一个wh把前一个wh值给冲掉了。
Warehouse wh= new Warehouse();
wh=(Warehouse)list1.get(i1);
address=wh.getAddress();
System.out.println(address);
request.setAttribute("wh", wh);
}
}
不解你为何这样做
这样做地址当然是同一个啦,你在页面也没必要${wh.address}
直接从list1里去就可以了啊,根据你的页面应该修改为${list.address}楼主不防是一样
request.setAttribute("list", list);Iterator it = list.iterator();
Integer id = null;
List list2 = new ArrayList();
request.setAttribute("list2", list2);
while (it.hasNext()){stock = (Stock) it.next();
id =stock.getWarehouseid();String str1 = " from Warehouse warehouse where warehouse.id = '" + id+ "'";
List list1=s.createQuery(str1).list();
String address = "";
request.setAttribute("list1", list1);
Map item = new HashMap();
list2.add(item);
item.put("stock", stock);
for(int i1=0;i1<list1.size();i1++){
Warehouse wh= new Warehouse();
wh=(Warehouse)list1.get(i1);
address=wh.getAddress();
item.put("address", address);
System.out.println(address);
request.setAttribute("wh", wh);
}
<td height="22" align="center"><font color="#000000"><c:out value="${list.stock.entertime}"/></font></td>
<td height="22" align="left">
<span class="STYLE8"></span><span class="STYLE8">快件【</span><font color="blue"><c:out value="${list.stock.ISBN}"/></font><span class="STYLE8">】已到<c:out value="${list.address}"/> </span>
<span class="STYLE8"></span><span class="STYLE8">派件员【</span><font color="blue"><c:out value="${list.stock.in_employeeid}"/></font><span class="STYLE8">】已进行入库登记</span>
</td>
<td height="22" align="center"><font color="#000000"><c:out value="${list.stock.outtime}"/></font></td>
<td height="22" align="left">
<span class="STYLE8"></span><span class="STYLE8">派件员【</span><font color="blue"><c:out value="${list.stock.out_employeeid}"/></font><span class="STYLE8">】已进行出库登记</span>
</td>
</tr>
</c:forEach>