2011-11-21 52 views
0

我有一個正在返回的數據庫中的變量映射,我想在網頁上顯示細節,前端是struts2。 我想這訪問Struts2中的Map鍵值

<html:iterator value="fields" id="field"> 
    <html:textfield name="#field.value" key="#field.value" label="#field.key"/> 
</html:iterator> 

顯然這沒有工作,我怎麼能輕易拿到鑰匙名稱,所以我可以有這樣

這樣做是爲了顯示如下

Name: [ ] 
Random: [ ] 
Something: [ ] 
代碼

作爲文本框的形式...

我該如何做到這一點?

+0

它是在struts2嗎? –

+0

是的... struts2 +瓷磚 –

+0

我不知道如何沒有看到它在struts2標籤庫 –

回答

5

嘛不知道怎麼做,在<html:iterator>因爲從來沒有看到它在Struts2標籤LIBOR兩端都沒有來了。

將使用簡單<iteraor>標籤

假設我們有listmap作爲地圖

<s:iterator value="listmap" status="stat"> 
        <s:iterator> 
         <tr> 
          <th><s:property value="#stat.index"/></th> 
          <td><s:property value="key"/></td> 
          <td><s:property value="value"/></td> 
         </tr> 
        </s:iterator> 
       </s:iterator> 

內迭代器是上下文它將使用的最後一個值敏感壓入堆棧。狀態屬性爲我們提供了一個IteratorStatus對象,每次迭代在我們想知道當前迭代時非常有用。

+0

試了這個 - 沒有工作,我得到的是關鍵或價值顯示 –

+0

確定它的工作屬性,但不是我需要它的textfield標記。

+0

確定它工作正常在字段中添加ONGL -

1

前綴「html」是struts2的taglib嗎?

如果使用structs2的標籤庫,讓我們用前綴S:

,你可以做這樣的

迭代地圖的鍵,然後通過鍵訪問值。

<s:iterator value="#someMap.keys" var="key"> 
    <s:textfield value="#someMap[key]" name="someMap[#key]"/> 
</s:iterator> 
+0

或訪問條目。

+0

試過沒有用

2

如果您有任意命名的值發送回操作,則應使用基於地圖的表單標記。請參閱collections文檔。

<s:form ...> 
    <s:iterator value="fields" var="field"> 
    <s:textfield name="sortingKey['%{#field.key}']" label="%{key}" value="%{value}" /> 
    </s:iterator> 
</s:form> 

提供一種用於在該動作的地圖上的getter/setter。另外,如果您使用的是Struts 2.1+,則不建議使用屬性<s:iterator>;循環變量應該使用var屬性命名。