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>&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();
    }

}
View Code

 

 

posted @ 2013-11-25 12:20  宁静致远_  阅读(3306)  评论(0编辑  收藏  举报