【问题标题】:Freemarker "string to hash conversion"?Freemarker“字符串到哈希转换”?
【发布时间】: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"} 那是我的错误

标签: spring-mvc freemarker


【解决方案1】:

虽然这不是标题中问题的答案,但我认为以下内容将解决您的实际问题。

您可以首先将自定义的 yes-no-map 作为哈希返回,通过定义函数而不是宏,避免将其从字符串转换为哈希。虽然宏仅呈现文本输出(然后由 &lt;#assign&gt; 指令捕获),但函数可以返回类型化值,在您的情况下为哈希。

<#function getContent>
  <#return {
    "yes": "yes",
    "no": "no"
  }>
</#function>

现在可以在任何表达式中调用此函数,例如分配给您想要的变量:

<#assign yesNoMap = getContent()>

<@spring.formRadioButtons "model.somename" getContent() />

甚至直接在spring宏的调用中使用:

<@spring.formRadioButtons "model.somename" getContent() />

【讨论】:

    猜你喜欢
    • 2016-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-19
    • 1970-01-01
    • 2019-08-26
    • 2015-08-21
    • 1970-01-01
    相关资源
    最近更新 更多