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

struts2 iterator排序的更多相关文章

  1. Struts2 iterator标签实现嵌套循环

    问题:有一个List<List<Object>>  list用struts2在页面显示使用<s:iterator value=”list” var=”list1″> ...

  2. struts2 iterator 迭代标签只显示前五条记录

    <s:iterator value="#session.produceLists" var="produce" begin="0" e ...

  3. 总结struts2 iterator status的用法

    1:#status.odd 是否奇数行 2:#status.count 当前行数 3:#status.index 当前行的序号,从0开始『#status.count=#status.index+1』 ...

  4. struts2官方 中文教程 系列十二:控制标签

    介绍 struts2有一些控制语句的标签,本教程中我们将讨论如何使用 if 和iterator 标签.更多的控制标签可以参见 tags reference. 到此我们新建一个struts2 web 项 ...

  5. Spring MVC之适配器的获取及执行(RequestMappingHandlerAdapter)

    首先看下doDispatch()方法如何找到适合的适配器来执行方法的: protected HandlerAdapter getHandlerAdapter(Object handler) throw ...

  6. 2018-2019-2 《Java程序设计》第8周学习总结

    20175319 2018-2019-2 <Java程序设计>第8周学习总结 教材学习内容总结 本周学习<Java程序设计>第十五章: 泛型: 泛型(Generics)的主要目 ...

  7. 20175324 2018-2019-2 《Java程序设计》第8周学习总结

    本周学习<Java程序设计>第十五章: 泛型: 泛型(Generics)的主要目的是可以建立具有类型安全的集合框架,如链表.散列映射等数据结构. 泛型类声明:class 名称<泛型列 ...

  8. 20175303 2018-2019-2 《Java程序设计》第8周学习总结

    20175303 2018-2019-2 <Java程序设计>第8周学习总结 教材学习内容总结 本周学习<Java程序设计>第十五章: 泛型: 泛型(Generics)的主要目 ...

  9. 20175224 2018-2019-2 《Java程序设计》第八周学习总结

    教材学习内容总结 第十五章 泛型与集合框架 泛型 泛型:目的为建立具有类型安全的集合框架. 泛型类声明:class People<E> class 名称<泛型列表> 链表 定义 ...

随机推荐

  1. 单片机TM4C123学习(八):SPI接口D/A

    1.头文件和变量定义(不是很清楚) #include "driverlib/ssi.h" #include "driverlib/i2c.h" #include ...

  2. 第六章 springboot + 事务

    在实际开发中,其实很少会用到事务,一般情况下事务用的比较多的是在金钱计算方面. mybatis与spring集成后,其事务该怎么做?其实很简单,直接在上一节代码的基础上在相应的方法(通常是servic ...

  3. python3中的zip

    在 python2 中zip可以将两个列表并入一个元组列表,如: a = [1,2,3,4] b = [5,6,7,8] c = zip(a,b) 结果:c [(1,5),(2,6),(3,7),(4 ...

  4. emacs windows 下配置

    一般windows的emacs是一个压缩包,解压一下,即可.主程序在bin文件夹下.需要设置一下emacs的home路径, 打开注册表,创建HKEY_LOCAL_MACHINE/SOFTWARE/GN ...

  5. Android(Xamarin)之旅(三)

    前面两篇说到了Xamarin的安装和一些简单的控件,今天来说说一些对话框和提示信息,以及简单的布局元素. 一.对话框和提示信息 一.对话框 我们首先从简单的对话框开始. 1.普通对话框 在androi ...

  6. 关于Control flow

    1.一个package包含一个control flow并且一个或多个data flow. (这个项目叫做 Integration services project,提供了三种不同类型的control  ...

  7. php 中文正则

    utf8编码中文 preg_match("/^[\x{4e00}-\x{9fa5}]+$/u") 而不是 "/^[\x4e00-\x9fa5]+$/u"

  8. Android中轴旋转特效实现,制作别样的图片浏览器

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/10766017 Android API Demos中有很多非常Nice的例子,这些例 ...

  9. 扩展欧几里德解的数量(51nod 1352)

    题意:给出N,A,B:求A*x+ B*y = N+1   的大于0 的解的数量: 思路:先用exgcd求出大于0的初始解x,rest = N - x*A; sum = rest/LCM(A, B); ...

  10. tar 压缩去除目录

    tar zcvf fd.tar.gz  *  --exclude=file1 --exclude=dir1 注意: 1.yes: --exclude=file1 no: --exclude file1 ...