struts2 iterator排序
因为存入数据库的数据可能不是按照我们想要的方式存进去的。这就导致取出来的时候,不是按照我们想要的方式排序。这时候就要利用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(); } }