如何使用显示表标记对空值进行排序

如何使用显示表标记对空值进行排序

问题描述:

我有一个日期列表,其中一些可能包含空值。现在我想使用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" 
/> 
+0

感谢links.but如果我创建firstLoginTime列的定制的装饰和排序,将返回字符串排序的列的情况下发送“NA”为空dates.Then和不是日期排序。我想要的是这个列的排序将只为非空日期完成。空日期将apprea作为“不适用”其他日期将保留日期而不是字符串 –

+0

我想我可能一直在带领你走上花园的道路,提到表装饰 - 改为使用自定义比较器。 – rcgeorge23

+0

谢谢。它解决了我的问题 –

添加属性即firstLoginTimeHtml显示通过getter方法格式化的日期。然后将sortProperty加上您的原始日期。
<display:column sortProperty="firstLoginTime" title="First timelogged onto site" sortable="true">
<c:out value="${row.firstLoginTimeHtml}"/>
</display:column>