dictionary - 如何在freemarker中创建字符串的哈希到命名空间变量?
问题描述
我是 freemarker 的新手,想解决以下问题。
我有一些命名空间变量
前任:
<@myNamespace.varA/>
<@myNamespace.varB/>
<@myNamespace.varC/>
我想把它放到一个哈希中。我可以想到三种方法,但我不确定它们是否正确?
方法一
<#assign MyHash = {
"keyA" : <@myNamespace.varA/>,
"keyB" : <@myNamespace.varB/>,
"keyC" : <@myNamespace.varC/>
}>
方法二
<#assign MyHash = {
"keyA" : ${myNamespace.varA},
"keyB" : ${myNamespace.varB},
"keyC" : ${myNamespace.varC}
}>
方法三
<#assign varA> <@myNamespace.varA/> </assign>
<#assign varB> <@myNamespace.varB/> </assign>
<#assign varC> <@myNamespace.varC/> </assign>
<#assign MyHash = {
"keyA" : varA,
"keyB" : varB,
"keyC" : varC
}>
方法 4(将 varA、varB、varC 保持在本地范围内)
<#function getMyHash>
<#local varA> <@myNamespace.varA/> </local>
<#local varB> <@myNamespace.varB/> </local>
<#local varC> <@myNamespace.varC/> </local>
<#return {
"keyA" : varA,
"keyB" : varB,
"keyC" : varC
}>
</#function>
<#assign MyHash = getMyHash()/>
笔记:
命名空间中可能还有其他变量我不想像这样放入哈希中
<@myNamespace.varD/>
<@myNamespace.varE/>
... etc
解决方案
如果我很了解你想要什么,就像这样:
<#function getMyHash>
<#return {
"keyA" : myNamespace.varA,
"keyB" : myNamespace.varB,
"keyC" : myNamespace.varC
}>
</#function>
<@.../>
用于调用宏(或其他用户定义的指令),因此不相关。除非myNamespace.varA
等是宏,并且您想将它们的输出放入该哈希中,但我想情况并非如此。
推荐阅读
- angular - Service Worker 和客户端证书
- python - Scrapy - 输出不出现
- java - Conscrypt 库是否适用于 Java 11?
- postgresql - PostgresSQL 在具有相同列的两个表中排名
- bash - Azure bash CLI - 叉子炸弹会影响天蓝色吗?
- android - Retrofit2 拦截器,仅在特定方法中使用令牌
- python - 硒:点击按钮
- asp.net-core - OpenIddictHandler 在第一次之后不处理 HTTP 请求
- python - 如何从网站导入外部文本文件并使用其中的列表
- python - 想要保持进程直到 subprocess.popen 中的 git 命令完成执行