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

    1.先压缩目录为一个文件 root@ip# tar zcvf apk.tar apk/ 2.对文件进行切分,-d表示切分后的文件后缀已数字区分(如apk_2015.tar01,apk_2015.tar ...

  2. jvm中加载类的全过程

    ClassLoader的作用:概括来说就是将编译后的class装载.加载到机器内存中,为了以后的程序的执行提供前提条件. jvm的整个生命周期,如下图所示 加载=>验证=>准备=>解 ...

  3. JavaScript密码复杂度

    <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...

  4. 在unity3d中使用opencv

    1.首先下载opencv2.4.10,解压缩后放在合适的地方,然后根据自己的电脑(32位或64位)选择X86或X64,我的是32位,将“opencv存放路径\build\x86\vc12\bin”加入 ...

  5. Nodejs Buffer

    javascript中的字符串本身就是以字符来存储,而非字节,下面的例子可以说明: console.log("0123456789".length); console.log(&q ...

  6. iOS 16进制字符串转换成int十进制

    NSRange rangeErr; rangeErr.location = 6; rangeErr.length = 2; NSString *strings = [value substringWi ...

  7. jquery load 加载改造,只加载body

    背景: 项目中大量用到了jquery和easyui组件,原生load经常出现主页面异常,原因是组件被重复初始化.也考虑过用iframe,但是在实际项目中的效果,最终取消了iframe方案,也尝试了其他 ...

  8. 浏览器js console对象

    js中调用console写日志 console.log("some log"); console.warn("some warning"); console.e ...

  9. CMMI整体理解

    CMMI的目的,一是质量,二是时间表,三是最低的成本:我的理解就是即以最低的成本,在既定的时间表要求下,达到相应的质量水平. CMMI是什么?我的理解是,CMMI并不是一个过程说明书,它不是告诉我们怎 ...

  10. JavaScript-遍历数组

    遍历数组:依次访问数组中每个元素 for(var i=0; i<arr.length;i++){ arr[i] //当前数组 } <!DOCTYPE html> <html&g ...