2

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>

我在这里真正想要做的事情显示orderdate在 UI 上并在sortOrderDate. 有什么建议吗?

4

1 回答 1

2

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

因此,您应该只拥有一个orderDateDate 类型的属性。并将其显示在您的列中并按时间顺序排序,代码将只是(假设您使用的是 JSTL,并且您的显示表的 ID 是order):

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

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

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

<display:column title="Order Date" sortProperty="sortOrderDate">
    ${order.orderDate}
</display:column>
于 2013-01-08T14:15:02.673 回答