MySQL データベースにクエリを実行し、サーブレットから JSP に結果を送信する標準的な tomcat webapp があります。JSP は従来のデータ テーブルを使用せずに結果を表示しますが、ロード時にスクリプトレットを使用して結果をそれぞれの HTML テーブルに入力します (結果行ごとに 1 つのテーブル)。
以下は、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>
結果が最初にページに入力された後で、結果を並べ替える (並べ替える) 最善の方法を知りたいです。ページの上部にドロップダウン メニューがあり、その値は並べ替えに使用する各テーブルの属性に対応しています。実際には、ユーザーの並べ替えの選択に基づいてテーブルを移動する必要があります。
次のオプションを検討しました。
複数の結果セットをサーブレットから JSP ページに渡し、別の並べ替え属性が選択されている場合はページを再表示 (更新?) します。このアプローチには多く の欠点があります。データベースで複数のデータベースクエリを実行する必要があり (コストがかかります)、同じ結果セットの複数のコピーを JSP に返さなければならず (非効率的です)、結果を再配置したいだけでページを更新する必要があります (煩わしい)。
JavaScript/jQuery を使用して、ページ上のテーブルを再配置します。 これは実装が非常に難しい可能性があり、処理/再表示に時間がかかる場合があります。結果が再注文されるまで、ユーザーを長時間待たせたくありません。
これらについてコメントしたり、これを処理する方法について他の提案を提供したりすることができれば、非常に感謝しています.
-ボブ