因为存入数据库的数据可能不是按照我们想要的方式存进去的。这就导致取出来的时候,不是按照我们想要的方式排序。这时候就要利用struts2的iterator排序功能,按照我们想要的顺序排列。
首先。一个付款类。PayDetail
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private long id;
/** 序号 */
@Column
private int sNum;
/**付款类别。rent租金。carDeposit车辆押金,peccancyDeposit违章押金*/
@Column
private String type="rent";
/** 付款时间 */
@Temporal(TemporalType.TIMESTAMP)
private Date paymentTime;
/** 帐期付款时间 */
@Temporal(TemporalType.TIMESTAMP)
private Date paymentDaysDate;
/** 业务区间开始日期 */
@Temporal(TemporalType.TIMESTAMP)
private Date between1;
/** 业务区间结束日期 */
@Temporal(TemporalType.TIMESTAMP)
private Date between2;
/** 付款比例 */
@Column
private float paymentScale = 0;
/** 付款金额 */
@Column
private int paymentAmount = 0;
/**实际付款时间*/
@Temporal(TemporalType.TIMESTAMP)
private Date parctitalDate;
/**实际付款金额*/
@Column
private int parctitalMoney=0;
/**欠款金额*/
@Column
private int debt=0;
/**付款单*/
@OneToMany(mappedBy="payDetail",cascade=CascadeType.ALL,fetch=FetchType.EAGER)
private Set<Paying> pays;
@ManyToOne
private DetailPayment dp;
类之间的关联关系是如下图,其他的类就不贴出来了
通过action查询出Contract.下面是JSP展现页面。相关注解都写在JSP页面上了。
<!--所需要的Contract的集合类--> <s:iterator value="#cs"> <tr> <th>三</th> <td colspan="8" style="text-align:left;">合同收入款付款(<s:property value="contractNum"/>)</td> </tr> <tr> <th>序号</th> <th>合同付款时间表</th> <th>账期</th> <th>付款金额</th> <th>实际付款时间</th> <th>实际付款金额</th> <th>余额</th> <th>滞纳金</th> <th>付款单号</th> </tr> <!--<s:bean>是配置自己所写的排序类。并定义ID让下面的<s:sort>调用 --> <s:bean name="util.MyComparator" id="myComparator"></s:bean> <!--按照ID调用上面所定义的排序类。这里的source就是指的数据源,也就是要循环的数据。这里指的是contract.detailPayment.payDetail 这是一个付款集合--> <s:sort comparator="myComparator" source="detailPayment.payDetail"> <!--这里给iterator起一个ID。进行下面的属性输出。--> <s:iterator id="pd"> <tr> <th><input type="checkbox" name="checkbox" id="checkbox" /><s:property value="#pd.sNum"/></th> <td><s:date name="#pd.paymentTime" format="yyyy年MM月dd日"/></td> <td><s:property value="#c.detailPayment.paymentDays"/>天</td> <td><a href="javascript:void(0);" onclick="PopupD();"><s:property value="#pd.paymentAmount"/></a> 元</td> <td>--</td> <td>--</td> <td>--</td> <td>0元</td> <td>--</td> </tr> </s:iterator> </s:sort> </s:iterator>
下面是我们自己的排序类myComparator。根据自己想要的排序顺序写出排序类。然后在JSP页面进行调用。
public class MyComparator implements Comparator<PayDetail> { public int compare(PayDetail o1, PayDetail o2) { return o1.getSNum()-o2.getSNum(); } }