freemarker如何遍历模板中所有变量 15
我在用freemarker模板生成word文档,里面基础变量有近1000个,有一个没传值就报错。所以我想有没有办法先把所有的变量都遍历打印出来,就是说我想要一个模板中所有...
我在用freemarker模板生成word文档,里面基础变量有近1000个,有一个没传值就报错。所以我想有没有办法先把所有的变量都遍历打印出来,就是说我想要一个模板中所有变量的清单,一个个手工去查太慢,高手们有无好办法?
展开
展开全部
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>
我通常都是这样来查看的,希望对你有帮助。
但是可以通过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>
我通常都是这样来查看的,希望对你有帮助。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询