freemarker如何遍历模板中所有变量 15

我在用freemarker模板生成word文档,里面基础变量有近1000个,有一个没传值就报错。所以我想有没有办法先把所有的变量都遍历打印出来,就是说我想要一个模板中所有... 我在用freemarker模板生成word文档,里面基础变量有近1000个,有一个没传值就报错。所以我想有没有办法先把所有的变量都遍历打印出来,就是说我想要一个模板中所有变量的清单,一个个手工去查太慢,高手们有无好办法? 展开
 我来答
jalin林崽
2019-02-14 · TA获得超过405个赞
知道答主
回答量:16
采纳率:0%
帮助的人:9.6万
展开全部
freemarker在生成模板的时候,当前数据模型的上下文是个SimpleHash 的hash结构,{a=1,b=2,...},我猜想题主是想遍历一下{}中所有的变量,但是在当前上下文这个{}在ftl中是没有名字的,所以没有办法在ftl中通过${name}的方式拿到整个数据模型上下文;
但是可以通过Debug跟踪源码的方式获得,我通常的做法是(SpringMVC+Freemarker):在FreeMarkerView的processTemplate(Template template, SimpleHash model, HttpServletResponse response)中打断点,这个方法调用Template的process方法来生成模板的,这里的SimpleHash model这个入参就相当于数据上下文根,在debug视图中就可看到有哪些变量及其值了。
比如:{Request=freemarker.ext.servlet.HttpRequestHashModel@25a50584,
JspTaglibs=freemarker.ext.jsp.TaglibFactory@66153398,
Application=freemarker.ext.servlet.ServletContextHashModel@4f3bc4e0,
springMacroRequestContext=org.springframework.web.servlet.support.RequestContext@27313074,
Session=freemarker.ext.servlet.HttpSessionHashModel@4e8918f6,
RequestParameters=freemarker.ext.servlet.HttpRequestParametersHashModel@438dad86}
接下来你想再看比如RequestParameters中的所有变量及值,那么在ftl中可以:
<#list RequestParameters?keys as key>
${key} = ${RequestParameters[key]}
</#list>
我通常都是这样来查看的,希望对你有帮助。
千叶育儿
2014-10-14 · 育儿、诗词分享,每天进步一点点!
千叶育儿
采纳数:1524 获赞数:5379

向TA提问 私信TA
展开全部
变量是用一个map存的,你遍历它就行了。或者用一个类来保存你所有的变量
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式