2013-02-05 24 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美分

相关问题