Как прочитать карту Java из запроса и выполнить итерацию по шаблону скорости? - PullRequest
1 голос
/ 21 июня 2011

Проблема: я работаю над Liferay 6.0.5. Я хочу прочитать Java-карту из запроса и перебрать ее в шаблоне скорости. Скорость не может прочитать это как карту, скорее это взято как строковое значение.

Код JSP: 1. Чтение категорий:

List<AssetCategory> curCategories = assetEntry.getCategories();
Map<String, String> catgrMap=new HashMap<String, String>();
String temp="";
String key=null;
for (AssetCategory category : curCategories) {
    key=(AssetVocabularyServiceUtil.getVocabulary(category.getVocabularyId())).getName();
    if(!temp.equalsIgnoreCase(key)){
       catgrMap.put(key,category.getName());
       temp=key;
    }else{
       String val=(String)catgrMap.get(key);
       val=val+","+category.getName();
       catgrMap.put(key,val);
       temp=key;
    }   
}
  1. Настройка карты в запросе

    request.setAttribute("categoryMap",catgrMap);
    

Что я хочу: я хочу перебрать этот catgrMap и прочитать его ключи и значения. Вот шаги:

  1. Получить карту по запросу:

    #set ($categoryMap= $request.get('attributes').get('categoryMap'))
    
  2. Итерация по карте - есть много способов итерировать по карте по скорости, и вот некоторые из них. 2,1

    #foreach ($mapEntry in $categoryMap.entrySet())
    <tr>
      <td>$mapEntry.key</td>
        <td>$mapEntry.value</td>
    

    # Конец

    2.2
    
    #set( $keys = $categoryMap.keySet() )
    

    # foreach ($ key в $ keys) $ ключ $ CategoryMap [$ ключ] # Конец

    2.3
    #set ($map = $categoryMap.getMap() )
    
    #foreach ($mapEntry in $map.entrySet())
    

    $ mapEntry.key $ mapEntry.value # Конец

  3. Контрольно-пропускной пункт: проблема не в том, как мы выполняем итерацию, а в том, как скорость считывает карту из запроса. Он читает карту как объект String, поэтому итерация невозможна. $ {CategoryMap.class.name} возвращает String, а не Map.

Каковы возможные способы передачи карты скорости и итерации по ней? Мы не заинтересованы в использовании ext-plugin.

...