Struts 2 - 通过对键进行条件检查来迭代映射的语法

发布于 2024-12-27 18:44:29 字数 601 浏览 0 评论 0原文

我们将一个映射从操作类传递到 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 属性吗?

请指教。

问候 萨罗杰

We are passing a map from action class to the JSP. The map is defined as follows:

Map<String, BigDecimal[]>

I need to iterrate this map in the JSP where the KEY will be the title of a row and the BigDecimal array will be the column values of the key.

In the map there is a key named "Total" whose values is sum of other values.

For example:

Map = {
Key1 =  {1,2,3}
Key2 =  {4,3,1}
Key3 =  {2,4,5}
Total = {7,9,9}
}

I have to show the values of Total key in a row with a different color or style. hence I need to put a condition as follows:

<s:if test="check if the key is Total">
     Show in a colour1
</s:if>
<s:else>
     Show in colour2
</s:else>

I am not sure about how to put condition on a key value of a map. Can I try something with the Status attribute of Iterator ?

Please advise.

Regards
Saroj

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

半世蒼涼 2025-01-03 18:44:29

请参阅此示例:

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>

See this example:

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;
    }
}

The success maps to the jsp and jsp source is:

        <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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文