struts2 iterator排序

时间:2023-03-09 05:14:03
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;

  类之间的关联关系是如下图,其他的类就不贴出来了

struts2 iterator排序

通过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>&nbsp;元</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();
} }