如何从请求中读取java映射并在速度模板中迭代它?

时间:2011-06-21 11:32:27

标签: map liferay virtual-machine liferay-6 velocity

问题:我正在使用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);
    
  2. 我想要的:我想迭代这个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>
      

        #END

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

      #foreach($ key中的$ key)                    $关键     $ categoryMap [$关键]          #END

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

      $ mapEntry.key     $ mapEntry.value     #END

    3. 道路障碍:问题不在于我们如何迭代,它的速度如何从请求中读取地图。它将地图读取为String对象,因此无法进行迭代。 $ {categoryMap.class.name}返回String而不是Map。

    4. 将地图传递给速度并迭代它的可能方法是什么?我们并不热衷于使用ext-plugin。

0 个答案:

没有答案