我是靠谱客的博主 体贴故事,最近开发中收集的这篇文章主要介绍Freemarker遍历键值为对象的map,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

由于freemarker内部方法仅支持key为string类型的map(具体原因参考文章最后),为解决key为其他对象的问题,特写此例,本实例中map的键为Integer,其他对象的键值可采用类似的方法

下面是解决问题的步骤:

1、自定义freemarker模板方法类,实现TemplateMethodModelEx接口

public class GetValByIntFromMap implements TemplateMethodModelEx {
@Override
public Object exec(List arguments) throws TemplateModelException {
Integer identity = Integer.parseInt(arguments.get(0).toString());
if(arguments.size()!=2||!ParamValidateUtil.validateCastIdentity(identity)){
throw new TemplateModelException("Wrong arguments!");
}
Object obj = ((SimpleHash)arguments.get(1)).toMap().get(identity);
return obj;
}
}

2、修改freemarker的配置文件,把自定义的类添加到配置文件中

<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<!-- 模板文件所在目录 -->
<property name="templateLoaderPath" value="/pages/" />
<!-- 指定FreeMarker模板文件的编码格式 -->
<property name="defaultEncoding" value="UTF-8" />
<!-- FreeMarker属性配置 -->
<property name="freemarkerSettings">
<props>
<!-- 每隔5小时检查模板是否更新,单位为秒 如果不经常更新模板可将更新的延迟时间设定长一点 -->
<prop key="template_update_delay">0</prop>
</props>
</property>
<property name="freemarkerVariables">
<map>
<entry key="webroot" value="${webRoot}" />
<entry key="identityToStr" value-ref="identityToStr" />
<entry key="getValByIntFromMap" value-ref="getValByIntFromMap" />
</map>
</property>
</bean>
<bean id="identityToStr" class="yineng.cast.freemarker.IdentityToStr" />
<bean id="getValByIntFromMap" class="yineng.cast.freemarker.GetValByIntFromMap" />
3、freemarker模板中直接调用该方法(第一个参数为key,第二个参数为map对象)
<#if (entourage.entourageCastMap?? && getValByIntFromMap(4,entourage.entourageCastMap)??)>
<div class="memberType">
<p class="memberTitle">男一</p>
<@cast.entourageCastDetail entourageCastList=getValByIntFromMap(4,entourage.entourageCastMap)/>
</div>
</#if>

最后

以上就是体贴故事为你收集整理的Freemarker遍历键值为对象的map的全部内容,希望文章能够帮你解决Freemarker遍历键值为对象的map所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(92)

评论列表共有 0 条评论

立即
投稿
返回
顶部