2013-02-05 27 views
0

我有一個標準的tomcat web應用程序,用於查詢MySQL數據庫並將結果從servlet發送回JSP。 JSP顯示沒有傳統數據表的結果,而是在加載時使用腳本將結果填入各自的HTML表(每個結果行一個表)。如何對未填充到JSP頁面中的標準結果表中的數據庫結果進行排序

這裏是一個粗略的代碼片段,以顯示我是如何填充的JSP頁面:

<html> 
    <body> 
    ... 

    <% 
     String[][] results = ((String[][])session.getAttribute("results")); 
     for (int i = 0; i < results.length; i++) 
     { 
     String[] rowResult = (String[])results[i]; 
     String tableId = "table_" + i; 
     String attribOne = rowResult[0]; 
     String attribTwo = rowResult[1]; 
    %> 

    <table id="<%= tableId %>" > 
     <script> 
     var table = document.getElementById("<%= tableId %>"); 
     table.setAttribute("attribOne", "<%= attribOne %>"); 
     table.setAttribute("attribTwo", "<%= attribTwo %>"); 
     </script> 
     ... 
    </table> 

    <% 
     } 
    %> 

    </body> 
</html> 

我想知道重新排序(排序)我的成果的最佳方式,他們已經經過最初在頁面上填充。頁面頂部有一個下拉菜單,其值與每個要排序的表上的屬性相對應。實際上,我需要根據用戶的排序選擇來移動表格。

我已經考慮了以下選項:從Servlet來JSP頁面

  • 傳遞多個結果集,並重新如果選擇了不同種類的屬性(刷新?)的頁面。缺點這種方法很多。我必須在數據庫中運行多個數據庫查詢(代價高昂),將相同結果集的多個副本返回給JSP(效率低下),並且可能必須刷新頁面(煩人),而只想重新排列結果

  • 使用JavaScript/jQuery重新排列頁面上的表格。這可能很難實現,可能需要很長時間來處理/重新顯示。我不想讓用戶長時間等待結果重新排序。

如果您有任何人可以評論這些或提供任何其他建議如何處理,我將不勝感激。

-Bob

+0

我仍然會建議使用一些JavaScript/jQuery的圖書館的/插件(如[的tablesorter(http://tablesorter.com/docs/)爲例)頁面上結果進行排序。這樣對速度影響最小。 **他們不是很難使用,他們是快速和可配置**。但是,當然,您需要使用HTML表格。 – informatik01

回答

0

既然你已經上市2最明顯的解決方案,這裏是另一種值得嘗試。

您可以定義一個POJO類來存放數據,而不是以String的形式傳遞給JSP [] []。

Class Row{ 
    String attribOne; 
    String attribTwo 
} 

,這樣就可以將它傳遞給JSP作爲列表<列表>

如果數據不是很龐大,你可以把它在一個會話變量和使用java.util.Comparator以多種方式排序。

唯一的缺點是您將有多個比較器,用於表中的每個可排序列。

當然不是THE最好的解決方案,我給你一個替代方案,但它肯定會避免額外的Db調用/瀏覽器停滯,如果你在JS做它。

也只是我的2美分

相關問題