需求:後臺有兩個Map,他們的Key相同,順序也相同,但是value不同,需要在傳入前臺後,遍歷其中一個Map,獲取到當前Map的值,然後根據當前Map的Key獲取另一個Map的記錄,並用js動態比較他們的不同項,然後用title屬性呈現出來。
編碼過程:第一步遍歷當前Map,代碼如下:
<s:iterator value="maps" id="column" status="st">
<s:set name="index"><s:property value="#st.index"/></s:set>
<%-- Map的key --%>
<td><s:property value="key"/></td>
<%-- 品牌名 --%>
<td><input type="text" name="reports[${index}].brand" value="<s:property value="value.brand"/>" /></td>
</s:iterator>
此處屬性較多,只列出一個做爲顯示代表。
第二步加上另一個Map的處理方式:
<s:iterator value="maps" id="column" status="st">
<s:set name="baseKey"><s:property value="key"/></s:set>
<s:set name="index"><s:property value="#st.index"/></s:set>
<%-- Map的key --%>
<td><s:property value="key"/></td>
<%-- 品牌名 --%>
<td><input type="text" name="reports[${index}].brand" value="<s:property value="value.brand"/>" base='<s:property value="bases.get(#baseKey).brand"/>' /></td>
</s:iterator>
但是這樣base的值總是爲空,後來通過一步步測試,發現#baseKey和bases.get(#baseKey)都是有值的,
但是#baseKey的值不正確,後來經過進一步的測試,改爲如下代碼就Okey了:
<s:iterator value="maps" id="column" status="st">
<s:set name="index"><s:property value="#st.index"/></s:set>
<%-- Map的key --%>
<td><s:property value="key"/></td>
<%-- 品牌名 --%>
<td><input type="text" name="reports[${index}].brand" value="<s:property value="value.brand"/>"base='<s:property value="bases.get(key).brand"/>' /></td>
</s:iterator>
這樣就可獲取到兩個Map的值,接下來通過jQuery比較他們的不同即可。