日期:2014-05-20  浏览次数:20827 次

freemarker map问题求解100分
程序中定义好的:HashMap<Long,List<News>> newsMap = new HashMap<Long,List<News>>();

ftl页面显示
<#list newsMap.keySet() as ntId>
  <#list newsMap.get(ntId) as news>
  ${news.title?if_exists}
  </#if>
</#list>

------解决方案--------------------
newsMap的使用是不是应该用${newsMap}

<#list ${newsMap}.keySet() as ntId>
<#list ${newsMap}.get(ntId) as news>
${news.title?if_exists}
</#if>
</#list> 试下 ,

我之前是用json处理这种的

Map<String ,Map<String ,String>> namemap =
new HashMap<String ,Map<String ,String>>();
String map = JSONObject.fromObject(namemap).toString()

ftl下

Ext.titansoft.bpm.resources = {


namedate : ${map},

findByid:function(id){

return this.namedate[id];
}


}










------解决方案--------------------
不行,再试试这个
Action

// Map<String,List<String>> kindsMap = new HashMap<String,List<String>>();
// List<String> aList = new ArrayList<String>();
// aList.add("a1");
// aList.add("a2");
// List<String> bList = new ArrayList<String>();
// bList.add("b1");
// bList.add("b2");
//
//
// kindsMap.put("a",aList);
// kindsMap.pu t("b", bList);

ftl

<#list kindsMap?keys as mKey> 

${mKey}
<#assign item = kindsMap[mKey]>
<#list item as itemValue>

${itemValue}
</#list>
</#list>

如果list里还有实体 可直接 ${itemValue.属性}

------解决方案--------------------
${news.title?if_exists}
?if_exists这东西有嘛?先去掉试试,简单点
------解决方案--------------------
 
#list newsMap?keys as ntId
------解决方案--------------------
因为你的key是Long型而不是String类,需要先转换。

<#list newsMap.get(ntId?long) as news>