Freemarker"字符串到哈希转换"?

时间:2015-01-21 20:20:41

标签: spring-mvc freemarker

我有一个宏以哈希格式(键/值)打印字符串,当我在spring宏freemarker中使用此值时抛出错误。

这是一个例子

<@getContent /> - prints this string {"yes":"yes","no":"no"}

<#assign yesNoMap><@getContent /></#assign>

<@spring.formRadioButtons "model.somename" yesNoMap />

基本上我使用spring宏来构建单选按钮,这些标签和值是从宏动态生成的。

spring macro正在抛出一个错误而它没有将变量“yesNoMap”识别为hash。

任何人都可以帮我将宏中的字符串打印转换为哈希吗?

由于

1 个答案:

答案 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() />