[英]Handling complex HashMap display in JSP
我有一個Hashmap對象allList
,形式為HashMap<String,ArrayList<Item>>
。 我想將其顯示在我的JSP頁面上,為jquery手風琴 。 以下是我嘗試過的代碼。
<script type="text/javascript">
$(function() {
$( "#accordion" ).accordion({
heightStyle: "fill",
collapsible: true
});
});
</script>
<div id="accordion">
<c:forEach items="${allList}" var="myLs">
<h3>${myLs.key}</h3>
<div>${myLs.value}</div> // This is giving me toString of Item.
</c:forEach>
</div>
我能夠將hashmap的鍵顯示為標題。 但是我無法弄清楚如何將相應的arraylist對象顯示為有序列表。 請幫幫我。
public class Item implements java.io.Serializable, Comparable<Object> {
private Long id;
private String itemName;
private Double unitCost;
private String status;
private int quantity;
public Item() {
}
//getters and setters
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof Item)) {
return false;
}
final Item item = (Item) o;
if (getItemName() != null && item.getItemName() == null)
return false;
if (getItemName() == null && item.getItemName() != null)
return false;
if (!getItemName().equals(item.getItemName()))
return false;
return true;
}
public int hashCode() {
return getItemName().hashCode();
}
public String toString() {
return "Item - Id: "+getId+", Name : "+getItemName;
}
public int compareTo(Object o) {
if (o instanceof Item) {
return getItemName().compareTo(((Item) o).getItemName());
}
return 0;
}
}
您將使用第二個forEach循環:
<div id="accordion">
<c:forEach items="${allList}" var="myLs">
<h3>${myLs.key}</h3>
<div>
<c:forEach var="item" items="${myLs.value}">
${item.foo}, ${item.bar} <br/>
</c:forEach>
</div>
</c:forEach>
</div>
我認為您會因錯誤的命名選擇而感到困惑。 您應該為Map<String, ArrayList<Item>>
allList
,因為它不是列表,而是地圖。 而且,您不應將映射條目命名為myLs
因為它並不代表任何含義。 我將代碼重構為(假設地圖中的鍵代表項目的所有者)
<div id="accordion">
<c:forEach items="${itemsPerOwner}" var="itemsPerOwnerEntry">
<h3>${itemsPerOwnerEntry.key}</h3>
<div>
<c:forEach var="item" items="${itemsPerOwnerEntry.value}">
${item.foo}, ${item.bar} <br/>
</c:forEach>
</div>
</c:forEach>
</div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.