Struts 2 - Синтаксис для перебора карты с условной проверкой ключей - PullRequest
0 голосов
/ 20 января 2012

Мы передаем карту из класса действий в JSP. Карта определяется следующим образом:

Map<String, BigDecimal[]>

Мне нужно указать эту карту в JSP, где KEY будет заголовком строки, а массив BigDecimal будет значениями столбца ключа.

На карте есть ключ с именем «Всего», значения которого являются суммой других значений.

Например:

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>

Я не уверен, как поставить условие на значение ключа карты. Могу ли я попробовать что-то с атрибутом Status Iterator?

Пожалуйста, сообщите.

С уважением Saroj

1 Ответ

0 голосов
/ 20 января 2012

См. Этот пример:

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>
...