代码之家  ›  专栏  ›  技术社区  ›  Eliy Arlev

错误使用资源:找不到资源

  •  0
  • Eliy Arlev  · 技术社区  · 7 年前

    我正在一个将模板存储在数据库中的环境中实现freemarker代码。 例如

    ${bundle.key} 
    

    将显示row\u id为“key”的行的值 然而,当我使用include指令时,有些东西不起作用。 我有一个带有关键GenF的模板,如下所示

    <#function PriceFormat Number>
     <#return Number?string['0.0000']>
    </#function>
    

    如果我跑步

       ${GenF.PriceFormat(1.568)}
    

    我得到输出

       1.5680
    

    正如所料。 但当我跑的时候

    <#include bundle.GenF>
    ${PriceFormat(1.568)}
    

    我收到一条错误消息:

    Can't find resource for bundle ...structures.shared.localization.bl.MultiResourceBundle, key 
    

    我是否使用了错误的include指令,或者我们的程序员在数据模型中没有正确定义某些内容?

    1 回复  |  直到 7 年前
        1
  •  0
  •   ddekany    7 年前

    #include 期望 名称 (路径,“文件”名称),而不是模板内容本身。请参见: https://freemarker.apache.org/docs/ref_directive_include.html

    你似乎想要的是 <@bundle.GenF?interpret /> . 但是请注意,解析后的模板不会以这种方式缓存,这与使用 #包括 . 对于 #包括 能够将“bundle.GenF”解析为模板名称(或者类似 "bundle:/GenF" ,但这取决于您),您必须使用自定义 TemplateLoader (参见 Configuration.setTemplateLoader ).

    由于您只需要在定义自定义数字格式时使用它,您可能还需要考虑使用自定义数字格式( https://freemarker.apache.org/docs/pgui_config_custom_formats.html ),如 ${1.538?string.@bundle_GenF} .