2011-09-08 63 views
2

我瀏覽一些Struts 2的代碼值和我看到這個語法提交按鈕,我以前從未見過..的Struts 2 S:提交按鈕語法設置在地圖

<s:submit key="map.keyName$Value" /> 

它不工作(它正在與Struts 2.0.x一起工作,現在我們已經轉向Struts 2.2.3)。我的意思是它沒有根據地圖中提到的鍵設置適當的值。

有沒有人使用過此語法?

任何其他可以讓我在地圖中設置值的替代語法建議(只使用struts標籤)將是最受歡迎的。

包含此代碼的jsp頁面被設計爲一個可以在運行時被任何頁面包含的解耦組件,這就是爲什麼此頁面無法調用任何java代碼來在java map中設置這些值 - 這就是我尋找標籤解決方案,可以設置地圖中的值。通過在地圖

在此先感謝

回答

2

設定值:

在JSP只

OGNL賦值語句:

<s:set var="" value="map[key] = keyValue" /> 

的Java

<s:set var="" value="map.put(key, keyValue)" /> 

編輯

您也可以用的onclick屬性提交按鈕,例如設定

<s:hidden name="map[key]" value="keyValue" /> 

值映射(以動作類)(答案 - 假設多個提交按鈕):

<script type="text/javascript"> 
    function setMap(key, keyValue) { 
     document.getElementById("mapToSet").name="map['" + key + "']"; 
     document.getElementById("mapToSet").value=keyValue; 
    } 
</script> 

<s:hidden name="test" id="mapToSet" /> 
<s:submit value="Search" onclick="setMap(key, keyValue)" /> 
+0

我需要在點擊s:submit按鈕時在map中設置這個值。可以:設置標籤嵌套在s:提交標籤? –

+0

感謝lschin,您的解決方案可以完成這項工作。但我的問題是我無法在JavaScript上使用我們的應用程序的這些關鍵功能,因爲即使最終用戶禁用JavaScript,客戶端也需要應用程序正常工作。所以我仍然在尋找一些基於struts/jstl標籤的解決方案,這個解決方案可以在不需要調用任何操作的情況下爲我完成這個設置工作。 –

2

我的「如何在Struts2的地圖設定值」進行搜索時找到了這個網頁,它使我下面的答案(我的理解是有點OT):


由於一個HTML輸入元素:

<input type="hidden" name="myField[105]" value="myValue" /> 

這將填充操作變量聲明爲:

Map<Integer, String> myField; 

這樣:

myField.get(105).equals("myValue"); // == true