我有一个宏以哈希格式(键/值)打印字符串,当我在spring宏freemarker中使用此值时抛出错误。
这是一个例子
<@getContent /> - prints this string {"yes":"yes","no":"no"}
<#assign yesNoMap><@getContent /></#assign>
<@spring.formRadioButtons "model.somename" yesNoMap />
基本上我使用spring宏来构建单选按钮,这些标签和值是从宏动态生成的。
spring macro正在抛出一个错误而它没有将变量“yesNoMap”识别为hash。
任何人都可以帮我将宏中的字符串打印转换为哈希吗?
由于
答案 0 :(得分:0)
虽然这不是标题中问题的答案,但我认为以下内容将解决您的实际问题。
您可以首先将自定义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() />