显示标签排序问题

时间:2013-01-08 13:45:22

标签: java displaytag

我正在使用displaytag来显示列表和排序。但是在排序方面存在问题。 我有一个属性orderdate格式,日期为Thursday 31 Jan 2012 13:10。因此,如果我对此列进行排序,则会按日期对日期进行分组。所以我创建了另一个属性sortOrderDate格式为2012 01 31 13:10并在sortProperty中使用它,如下所示。

<display:column title="Order Date" property="orderDate" 
                    sortProperty="sortOrderDate"></display:column>
<display:column property="sortOrderDate" 
         class="hidden" headerClass="hidden" sortable="true"></display:column>

我真正想要做的是在UI上显示orderdate并在sortOrderDate上对其进行排序。 有什么建议吗?

1 个答案:

答案 0 :(得分:2)

首先,如果数据是日期,则不应将其存储为String,而应存储为Date。日期实例自然会按时间顺序排序,而不是按字典顺序排列。

所以你应该只有一个类型为Date的orderDate属性。要在列中显示它,并按时间顺序排序,代码就是(假设您正在使用JSTL,并且显示表的ID为order):

<display:column title="Order Date" sortProperty="orderDate">
    <fmt:formatDate value="order.orderDate"/>
</display:column>

您当然可以使用type标记的dateStyletimeStylepattern<fmt:formatDate>属性自定义日期格式。请参阅http://docs.oracle.com/javaee/5/jstl/1.1/docs/tlddocs/fmt/formatDate.html

可以使用相同的技术来显示字符串并使用另一个字符串属性进行排序,但这是非常糟糕的设计:

<display:column title="Order Date" sortProperty="sortOrderDate">
    ${order.orderDate}
</display:column>