Struts 2 - 使用条件检查键迭代地图的语法

时间:2012-01-20 06:12:03

标签: struts2 jsp-tags

我们正在将一个映射从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

1 个答案:

答案 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>