Freemarker“字符串到哈希转换”?
Posted
技术标签:
【中文标题】Freemarker“字符串到哈希转换”?【英文标题】:Freemarker "string to hash conversion"? 【发布时间】:2015-03-20 11:56:55 【问题描述】:我有一个宏以哈希格式(键/值)打印字符串,当我在 spring 宏 freemarker 中使用这个值时会抛出错误。
这是一个例子
<@getContent /> - prints this string "yes":"yes","no":"no"
<#assign yesNoMap><@getContent /></#assign>
<@spring.formRadioButtons "model.somename" yesNoMap />
基本上我使用弹簧宏来构造单选按钮,而这些标签和值是动态来自宏的。
spring 宏抛出一个错误,它没有将变量“yesNoMap”识别为哈希。
谁能帮我将宏中的字符串打印转换为哈希?
谢谢
【问题讨论】:
你试过?eval
吗?
是的,我使用了 eval,freemarker 抛出错误“Expression & expected....”
这里是 excat 错误信息:freemarker.core.ParseException: Encountered "&"
这个"yes":"yes","no","no"
应该是"yes":"yes","no":"no"
吗?
你是对的,应该是 "yes":"yes","no":"no" 那是我的错误
【参考方案1】:
虽然这不是标题中问题的答案,但我认为以下内容将解决您的实际问题。
您可以首先将自定义的 yes-no-map 作为哈希返回,通过定义函数而不是宏,避免将其从字符串转换为哈希。虽然宏仅呈现文本输出(然后由 <#assign>
指令捕获),但函数可以返回类型化值,在您的情况下为哈希。
<#function getContent>
<#return
"yes": "yes",
"no": "no"
>
</#function>
现在可以在任何表达式中调用此函数,例如分配给您想要的变量:
<#assign yesNoMap = getContent()>
<@spring.formRadioButtons "model.somename" getContent() />
甚至直接在spring宏的调用中使用:
<@spring.formRadioButtons "model.somename" getContent() />
【讨论】:
以上是关于Freemarker“字符串到哈希转换”?的主要内容,如果未能解决你的问题,请参考以下文章
开源代码生成器,基于mybatis-generator扩展,结合freemarker