2010-10-23 87 views
3

我有使用struts2 <s:set>標籤在頁面上創建的hashmap。它看起來是這樣的使用Struts 2訪問HashMap

<s:set var="mymap" value="#request.mymap"/> 

在頁面中的某個時候,我需要從基於密鑰的HashMap中的值,我想用OGNL做到這一點。

該密鑰是基於某些邏輯生成的,我使用另一個<s:set>標記存儲該邏輯。像這樣的東西

<s:set var="mykey" value="1"> 

我需要使用此密鑰從哈希映射中獲取值。我需要顯示它。

我該如何簡單地在hashmap上調用get函數?

我想這

<s:property value="#mymap[#mykey]"/> 

<s:property value="#mymap[%{#mykey}]"/> 

<s:property value="%{#mymap[%{#mykey}}]"/> 

第三個顯然沒有因爲嵌套問題的工作。
但是,由於值屬性的處理方式,同樣的嵌套邏輯也適用於第二種情況。然而,似乎沒有爲我工作。

這裏的問題是我的鑰匙是未知的。它是基於某種模式的動態生成的字符串。我需要使用這個動態密鑰訪問存儲在hashmap中的對象。由於無法嵌套ognl,我正在修復。

我想這個問題很簡單。我幾乎覺得我明白了,但不知怎的,解決方案無法解決我的問題。

+0

http://struts2-java.blogspot.sg/2008/09/ognl-4.html – Cid 2012-10-12 09:47:54

回答

3

我想我正在使用不同版本的struts,其中使用%{}是需要評估的表達式。我現在更改了jar文件。 這是什麼做的工作對我來說:

<s:property value="#mymap.[#mykey2]"/> 

我的問題來了,因爲我試圖用它在一個HREF爲S:標籤。沒有%{}運算符,表達式未被評估。

所以,我想,我是在一開始就是正確的。其餘時間,這只是我愚蠢。 :>

更新: 我寫了關於這個問題的博客文章,以防有人感興趣。 http://mycodefixes.blogspot.com/2010/11/struts-2-creating-and-accessing-maps.html