displaytag數字排序問題的解決方法

2021-08-29 17:32:04 字數 720 閱讀 7180

在使用displaytag顯示數字時,如果對數字進行了html包裝,那麼就有可能造成排序結果的不正確。

displaytag排序的方法是:compare(object object1, object object2)

1.如果object1,object2都是string,則按string排序;

2.如果object1,object2實現了comparable介面,則compareto方法比較,這樣純數字排序因為能夠轉換成實現comparable介面的數字型別所以排序結果正確;

3.其他情況轉換成string比較。

因此,組裝成html的列就預設按string來比較,造成排序結果與預期不符。

例如需要排序displaytag中帶超級鏈結的數字列:

s1: 53

s2: 9

則比較結果s1 < s2,顯然和我們預期的相反。

解決的方法:

1.自定義乙個comparator類,實現你自己的比較規則,在頁面需要的列中配置

2.外排序

3.如果只是需要把數字排正確,更簡單的方法是寫乙個數字的format類,在decorator組裝html時在數字前補0對齊:

s1: 53

s2: 9

另外,如果每列需要比較數字前的html不是相同的,可以新增隱藏域來解決。例如:

s1: 53

s2: 9

修改為:

s1: 53

s2: 9

DisplayTag有中文條件時的分頁問題

中文作為表單提交內容的時候,翻頁就不能用了,中文變成了亂碼。表單傳送時,form的提交採用的是post方法,這沒錯,但鏈結採用的是get方法,問題就出在這裡,因為和tomcat4相比,tomcat5的post和get採用的方式不再相同了,漢字編碼的實現方式也不同了。post是將位址傳送一次,將for...

Jquery datatable中文排序問題

先擴充套件datatable的的排序功能,新增乙個自定義排序函式 為jq datatable 自定義中文排序 jquery.fn.datatableext.osort chinese sort asc function s1,s2 jquery.fn.datatableext.osort chine...

two pointers 歸併排序 快速排序問題

概念 two pointers廣義上概念就是利用問題本身與序列的特性,利用下標i j對序列進行掃瞄,以較低的複雜度來解決問題,其實也不太像是一種演算法,說來可以看做是一種程式設計技巧,一種思想比較適合。例如在乙個遞增序列中找到a b c的數然後輸出a,b的值,c是我們自己指定的數,常規做法很容易想到...