【问题标题】:Dynamic property key动态属性键
【发布时间】:2018-04-04 22:17:09
【问题描述】:

我的项目有几个事件,我将事件 ID 存储在站点属性中,并且由于每个事件页面都扩展了相同的核心模板,我想将特定的事件 ID 分配给一个通用变量。

问题是当我尝试在属性键引用中插入变量时,freemarker 会返回语法错误。有没有办法解决这个问题?

${sectionName}
//rootSection

<@property key="eventID-rootsection" /> 
//32465

<#assign eventID = <@property key="eventID-${sectionName}" /> >
//syntax error

【问题讨论】:

    标签: freemarker


    【解决方案1】:

    问题在于property 被定义为指令(可能是宏),而不是方法(或函数)。您需要它的方法(或函数)版本。那么您的示例将如下所示:

    ${sectionName}
    //rootSection
    
    ${property("eventID-rootsection")}
    //32465
    
    <#assign eventID = property("eventID-${sectionName}")>
    

    要这样定义property,请实现TemplateMethodModelEx 或使用#function 指令。

    【讨论】:

    • 顺便说一句,这样的功能通常可以通过实现TemplateHashModel 来更好地解决,然后您可以编写properties.somePropertyName。好吧,你有一个-...然后它是properties.eventID\-rootsection。是的,- 必须被逃脱......从美学上来说有点毁了它。 (: 动态键的第二种情况是properties['eventID-${sectionName}']
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-11
    • 1970-01-01
    • 2019-03-19
    • 1970-01-01
    • 2019-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多