我们正在将一个映射从action类传递给JSP。地图定义如下:
Map<String, BigDecimal[]>
我需要在JSP中对此映射进行迭代,其中KEY将成为行的标题,BigDecimal数组将是键的列值。
在地图中有一个名为“Total”的键,其值是其他值的总和。
例如:
Map = {
Key1 = {1,2,3}
Key2 = {4,3,1}
Key3 = {2,4,5}
Total = {7,9,9}
}
我必须在具有不同颜色或样式的行中显示Total键的值。因此我需要提出如下条件:
<s:if test="check if the key is Total">
Show in a colour1
</s:if>
<s:else>
Show in colour2
</s:else>
我不确定如何将条件放在地图的键值上。我可以尝试使用Iterator的Status属性吗?
请告知。
此致 Saroj
答案 0 :(得分:-2)
见这个例子:
ActionClass:
public class AccountsAction extends ActionSupport {
Map<String, BigDecimal[]> valuesMap;
public Map<String, BigDecimal[]> getValuesMap() {
return valuesMap;
}
public void setValuesMap(Map<String, BigDecimal[]> valuesMap) {
this.valuesMap = valuesMap;
}
public String execute() {
valuesMap = new HashMap<String, BigDecimal[]>();
BigDecimal[] bdArray = {new BigDecimal(1),new BigDecimal(2), new BigDecimal(3)};
valuesMap.put("Key1", bdArray);
bdArray = new BigDecimal [] {new BigDecimal(4), new BigDecimal(5), new BigDecimal(6)};
valuesMap.put("Key2", bdArray);
bdArray = new BigDecimal [] {new BigDecimal(7),new BigDecimal(8), new BigDecimal(9)};
valuesMap.put("Key3", bdArray);
bdArray = new BigDecimal [] {new BigDecimal(10),new BigDecimal(11), new BigDecimal(12)};
valuesMap.put("Total", bdArray);
return SUCCESS;
}
}
success
映射到jsp和jsp源是:
<table>
<s:iterator value="valuesMap" status="stat">
<tr <s:if test="key == 'Total'">style="color: red;"</s:if>>
<s:iterator>
<td><s:property value="key"/></td>
<td><s:iterator value="value" status="stat1"><s:property/><s:if test="!#stat1.last">,</s:if></s:iterator></td>
</s:iterator>
</tr>
</s:iterator>
</table>