大家见贴好,小弟被一个问题困惑了好几天,望各位高手能不吝赐教,小弟将不胜感激,问题是这样的:我做的是一个会计系统,其中会计凭证表有一个要求,就是每个表只能只能显示5行记录,如有超过5行记录的话则在另一个表中显示,并且注明是续上一个凭证编号的记录,若不足5行则在一个表中作显示,并且考虑分页显示...其显示凭证的代码如下:
<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>    
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head></head>
<body><br>
 <c:forEach items="${voucherHeads}" var="voucherHead">
 
  <table width="846" border="0" align="center" cellpadding="0" cellspacing="0">
   <tr>
     <td colspan="2"><div align="center">记账凭证</div><br></td>
       </tr>
   <tr>
<td colspan="2"><div align="center">================================================</div></td>
</tr>
   <tr>
  
<td colspan="2"><div align="center"> (Data) </div></td>
</tr>
   <tr>
     <td><div align="right">SAP凭证号:</div></td>
     <td>${voucherHead.sapCertificateId }</td>
       </tr>
   <tr>
<td width="633"><div align="right">凭证编号 NO.</div></td>
<td width="213">${voucherHead.certificateId }</td>
</tr>
  </table>
  <table width="846" border="1" align="center" cellpadding="0" cellspacing="0">
<tr>
  <td width="228" rowspan="2"><div align="center">摘要<br>
  Explanation </div></td>
  <td width="148" rowspan="2"><div align="center">科目名称<br> 
  Account subject </div></td>
  <td width="148" rowspan="2"><div align="center">外币金额 <br>
  For.Cur Amount </div></td>
  <td width="99" rowspan="2"><div align="center">汇率<br>
  Exc.Rat </div></td>
  <td colspan="2"><div align="center">金额 Amount </div></td>
</tr>
<tr>
  <td width="105" height="29"><div align="center">借方Debit </div></td>
  <td width="104"><div align="center">贷方 Credit </div></td>
</tr>

<c:forEach items="${voucherHead.vocherBodys}" var="vocherBody">
<tr>                       //把凭证编号相同的记录在一个表中作输出(如多于5行在另一表中输出.)

  <td>&nbsp;${vocherBody.abstractMsg }</td>
  <td>&nbsp;${vocherBody.accountsubjects.sapId }${vocherBody.accountsubjects.ledgerSubjecName }</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  <td>${vocherBody.debitAmoun }</td>
  <td>${vocherBody.loanAmount }</td>
 
    </tr>
    </c:forEach>
<tr>
  <td colspan="4"><div align="center">合计 (Total): </div></td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
</tr>
  </table>
  <p>
  <table width="846" border="0" align="center" cellpadding="0" cellspacing="0">
   <tr>
<td width="95"><p align="center">登帐员<br>(Manager):</p>
    </td>
<td >${voucherHead.fill }</td>
<td width="95"><div align="center">复核<br>
    (Checked):</div></td>
<td>&nbsp;</td>
<td width="95"><div align="center">制单<br>
    (Prepared):</div></td>
<td >${voucherHead.make }</td>
    <td width="95"><div align="center">出纳<br>
      (Cashier):</div></td>
<td>&nbsp;</td>
   </tr>
  </table>
  <p><p>
  </c:forEach>
 </body>
</html>
现在的问题是所有同一个凭证编号的记录在同一个表中显示出来的.....望有高手指教,请加我Q:253673021

解决方案 »

  1.   

    这种情况你要问业务咨询师。
    分页是按照什么分?国际会计业务也有这样情况,类似小金额转储。但是一般是按照5个一组形成内嵌表明细,然后分页的时候【不是】按照明细分页,而是按照组分页
    最后:显示界面跟如下情况类似:
    组【1】+
        记录1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
        记录2XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
        记录3XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
        记录4XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
        记录5XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    组【2】+
    组【3】+
    组【4】+
    组【5】+你点+号,出现5条明细的内嵌表。 构建HashMap<key ,list>这样的结构数据即可。