如何使用显示表标记对空值进行排序
问题描述:
我有一个日期列表,其中一些可能包含空值。现在我想使用display table标记显示它并使其可排序,并且日期显示为空我想把它改成字符串“不适用”,我该怎么办? 这里是我的专栏(我用struts 2)如何使用显示表标记对空值进行排序
<display:column property="firstLoginTime" title="First timelogged onto site" sortable="true"/>
答
道歉,我在我的iPhone早消磨时间。
nb。这只是基于查看displaytag文档,但您是否尝试编写自定义比较器?
public class CustomDateComparator implements Comparator<Date> {
public int compare(Date date1, Date date2) {
if (date1 == null) {
return -1;
}
if (date2 == null) {
return 1;
}
return date1.compareTo(date2);
}
}
在你的JSP,displaytag让你指定这样的比较 -
<display:column
property="firstLoginTime"
title="First timelogged onto site"
sortable="true"
comparator="your.project.CustomDateComparator"
/>
答
添加属性即firstLoginTimeHtml
显示通过getter方法格式化的日期。然后将sortProperty
加上您的原始日期。 <display:column sortProperty="firstLoginTime" title="First timelogged onto site" sortable="true">
<c:out value="${row.firstLoginTimeHtml}"/>
</display:column>
感谢links.but如果我创建firstLoginTime列的定制的装饰和排序,将返回字符串排序的列的情况下发送“NA”为空dates.Then和不是日期排序。我想要的是这个列的排序将只为非空日期完成。空日期将apprea作为“不适用”其他日期将保留日期而不是字符串 –
我想我可能一直在带领你走上花园的道路,提到表装饰 - 改为使用自定义比较器。 – rcgeorge23
谢谢。它解决了我的问题 –