dde*_*any 21
没有通用的解决方案,但你可以试试
<#list .data_model?keys as key>
${key}
</#list>
Run Code Online (Sandbox Code Playgroud)
这适用于数据模型只是一个平常Map或JavaBean,但对于更复杂的数据模型这取决于数据模型的实现,如果它支持?keys,如果它的确返回了一切.
你也有你在模板中设置变量,可上面列出的而不是只喜欢,.data_model使用.globals,.namespace(这意味着当前模板命名空间)和.locals.
你可能还有Configuration-level共享变量,并且没有办法纯粹从FTL列出那些(你可以TemplateMethodModel为它写一个自定义Configuration.getSharedVariableNames(),然后从模板中调用它).
当然,理想情况下,FreeMarker应该有一个<#show_variables>指令或者其他东西,尽最大努力展示这一切......但遗憾的是还没有这样的东西.
小智 5
更详细的方法是这个宏:
<#macro dump_object object debug=false>
<#compress>
<#if object??>
<#attempt>
<#if object?is_node>
<#if object?node_type == "text">${object?html}
<#else><${object?node_name}<#if object?node_type=="element" && object.@@?has_content><#list object.@@ as attr>
${attr?node_name}="${attr?html}"</#list></#if>>
<#if object?children?has_content><#list object?children as item>
<@dump_object object=item/></#list><#else>${object}</#if> </${object?node_name}></#if>
<#elseif object?is_method>
#method
<#elseif object?is_sequence>
[<#list object as item><@dump_object object=item/><#if !item?is_last>, </#if></#list>]
<#elseif object?is_hash_ex>
{<#list object as key, item>${key?html}=<@dump_object object=item/><#if !item?is_last>, </#if></#list>}
<#else>
"${object?string?html}"
</#if>
<#recover>
<#if !debug><!-- </#if>LOG: Could not parse object <#if debug><pre>${.error}</pre><#else>--></#if>
</#attempt>
<#else>
null
</#if>
</#compress>
</#macro>
<@dump_object object=.data_model/>
Run Code Online (Sandbox Code Playgroud)
这将为您提供数据模型的完整转储。
| 归档时间: |
|
| 查看次数: |
7485 次 |
| 最近记录: |