Как получить значение из связанного хеш-карты с помощью итераторов в Struts2 ......? - PullRequest
0 голосов
/ 31 мая 2011

У меня есть функция, которая возвращает LinkedHashMap в Struts2, и я только что узнал, что мы не можем использовать цикл for в Struts2, вместо этого мы должны использовать итераторы, и я новичок в Struts

может любой, кто поможет мне получитьзначение из связанного хеш-карты с использованием итераторов, ниже показано, как значения выстраиваются в хэш-карте:

 LinkedHashMap<String, ArrayList<String>> topSuppliers = new LinkedHashMap<String, ArrayList<String>>();

    while(resultset.next()){

    ArrayList<String> innerList = new ArrayList<String>();

    String manufId = resultset.getString("manufacturer_id");
    String manufLogo = resultset.getString("SUPPLIER_LOGO_IMAGE");
    String manufName = resultset.getString("MANUFACTURER_NAME");
    String manufURL = resultset.getString("MANUFACTURER_URL");

     innerList.add(manufId);
     innerList.add(manufLogo);
     innerList.add(manufName);
     innerList.add(manufURL);

     topSuppliers.put(manufName,innerList);
    }
return topSuppliers;

И я хочу отобразить их в наборе из 4 производителей:

Set1:  1,2,3,4
Set2:  5,6,7,8
Set3:  9,10,11,12
etc......

Спасибо........

Ответы [ 2 ]

1 голос
/ 11 июля 2011

Вы можете использовать s: iterator для карты.

<s:iterator value="topSuppliers">
  <s:property value="key" />: <s:iterator value="value" status="status"><s:property /><s:if test="!#status.last">,</s:if></s:iterator>
</s:iterator>

Это выполняет итерацию по карте, используя Map.Entry, а затем выполняет итерацию по вашему списку значений, используя другой статус итератора и итератора для добавления ",", если толькоэто последняя запись.

1 голос
/ 31 мая 2011

Вы должны выполнить итерацию по List of Map вместо Map of List


Пример :

@Getter
private List<Map> listOfMap = Lists.newArrayList();

public String execute() {

    while (resultset.next()) {
        final Map<String, String> map = Maps.newHashMap();

        map.put("manufId", resultset.getString("manufacturer_id"));
        map.put("manufLogo", resultset.getString("SUPPLIER_LOGO_IMAGE"));
        map.put("manufName", resultset.getString("MANUFACTURER_NAME"));
        map.put("manufURL", resultset.getString("MANUFACTURER_URL"));

        listOfMap.add(map);
    }

    return SUCCESS;
}

<s:iterator value="listOfMap">
  ${manufId}
  ${manufLogo}
  ${manufName}
  ${manufURL}
</s:iterator>

listOfMap также можно использовать в качестве dataSource для Struts2 JasperReports Plugin .

...