我正在使用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
上对其进行排序。
有什么建议吗?
答案 0 :(得分:2)
首先,如果数据是日期,则不应将其存储为String,而应存储为Date。日期实例自然会按时间顺序排序,而不是按字典顺序排列。
所以你应该只有一个类型为Date的orderDate
属性。要在列中显示它,并按时间顺序排序,代码就是(假设您正在使用JSTL,并且显示表的ID为order
):
<display:column title="Order Date" sortProperty="orderDate">
<fmt:formatDate value="order.orderDate"/>
</display:column>
您当然可以使用type
标记的dateStyle
,timeStyle
,pattern
和<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>