问题:我正在使用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;
}
}
在请求中设置地图
request.setAttribute("categoryMap",catgrMap);
我想要的:我想迭代这个catgrMap并读取它的键和值。以下是步骤:
从请求中获取地图:
#set ($categoryMap= $request.get('attributes').get('categoryMap'))
迭代地图 - 有很多方法可以在速度上迭代地图,这里有一些。 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
道路障碍:问题不在于我们如何迭代,它的速度如何从请求中读取地图。它将地图读取为String对象,因此无法进行迭代。 $ {categoryMap.class.name}返回String而不是Map。
将地图传递给速度并迭代它的可能方法是什么?我们并不热衷于使用ext-plugin。