2008年4月14日 星期一

jsp 程式透過 session 取得 hashmap 值

承接的系統,因為需要處理一個比較複雜的資料傳遞,想說試著用 hashmap 看看。日前是卡在傳完後要怎麼引用,經過多番嘗試與查詢,終於踹出來惹。

sample code:

.java
Map list = new HashMap();
ArrayList ar=new ArrayList();
ar.add(new String[]{"101","honda"});
ar.add(new String[]{"102","asuka"});

list.put("100",ar);
request.getSession().setAttribute("Slist",list);

是由 arraylist 串到 hashmap 的資料型態,構成 arraylist 又是 String[]。

.jsp
"${sessionScopeSlist['100'][0][0]}"

在呈現單筆資料,如此可以正確印出「101」
後面的 index如為 ['100'][1][1] 則是印出「asuka」

之前會卡在無法正確引用,應是 'single quotes',卻一直在試 double quote, [number]組合。

不過原本的系統的資料是有好幾組 key與 value對應,所以顯示部份是包在 foreach 裡,如下:

c:forEach items="${sessionScope.Slist}" var="rowdata">
li> "${rowdata}" ﹤/li>
﹤/c:forEach>


以塞入 99、100 之key 為例,會秀出
- "99=[[Ljava.lang.String;@c2ee15, [Ljava.lang.String;@19cd75a]"
- "100=[[Ljava.lang.String;@c2ee15, [Ljava.lang.String;@19cd75a]"
(物件資訊)

如要指定 string array 的值,或是取 key值寫法就是 .key 與 .value,所以改成這樣子就可以了!

"${rowdata.value[0][0]}"

沒有留言: