0
tableを使って表を作ったのですが、、
javaPRGとJSPを使って表を作成したのですが、思っているのとは違う形で表示されてしまうのでお知恵をお借りしたいです。
まずjavaでHashtableにKeyとValueを設定するクラスがあります。
public class GoodsList {
public static Hashtable goods = new Hashtable();
public GoodsList() {
goods.put("0001", "きゅうり");
goods.put("0002", "だいこん");
goods.put("0003", "ねぎ");
goods.put("0004", "ごぼう");
goods.put("0005", "きゃべつ");
goods.put("0006", "にんじん");
goods.put("0007", "なす");
goods.put("0008", "はくさい");
}
}
そのHashtableのKeyとValueを取るためのメソッドを別のクラスで作りました。
public class Shop {
GoodsList goodsList = new GoodsList();
Enumeration goodsKey = goodsList.goods.keys();
public String nextGoodCode() {
String goodCode = "";
goodCode = (String) goodsKey.nextElement();
return goodCode;
}
public boolean hasMoreGoods() {
return goodsKey.hasMoreElements();
}
public String getGoodName(String goodCode) {
String goodName = (String) goodsList.goods.get(goodCode);
return goodName;
}
}
このクラスのメソッドをJSPで使いました。
<%@ page language="java" contentType="text/html; charset=Shift_JIS" %>
<%@ page import="shop.*" %>
<%
String goodCode = "";
String goodName = "";
Shop shop = new Shop();
%>
<html>
<head>
<title>Shop</title>
</head>
<body>
<form>
<center>
<h2>商品一覧</h2>
<table border = "2" width = "80%">
<thead>
<tr><th>商品名</th> <th>商品名</th></tr>
</thead>
<tbody align = "center">
<%
for (int i = 0; shop.hasMoreGoods(); i++) {
goodCode = shop.nextGoodCode();
goodName = shop.getGoodName(goodCode);
if (i % 2 == 0) {
%>
<tr><td><%= goodName %></td>
<%
} else {
%>
<td><%= goodName %></td>
<%
}
}
%>
</tbody>
</table>
</center>
</form>
</body>
</html>
で、表示はされるのですが、nextElementを使ってHashtableから取り出している為、Keyの数が大きい方から取られてしまい、JSPの表にした時、Keyの大きい方から表示されてしまいます。
これを、Keyの小さい方から順に表にしていきたいのです。昇順というのでしょうか。
その際、javaPRGの方はそのままにJSPの方のみを改造するならどのような手法・方法が考えられるでしょうか?