关于FreeMarker,是否可以指示它默认将所有数字视为“计算机”数字?
我试图申请
cfg.setSetting(Configurable.NUMBER_FORMAT_KEY, "computer");
或者
cfg.setNumberFormat("computer");
配置对象,但结果不是预期的。相信这是文档的方法,有什么问题吗?
关于FreeMarker,是否可以指示它默认将所有数字视为“计算机”数字?
我试图申请
cfg.setSetting(Configurable.NUMBER_FORMAT_KEY, "computer");
或者
cfg.setNumberFormat("computer");
配置对象,但结果不是预期的。相信这是文档的方法,有什么问题吗?
您指定的数字格式必须是java.text.DecimalFormat支持的。您现在可以做的最接近的事情是将语言环境切换到en_US(并更好地确保它不使用摸索;请参阅http://freemarker.org/docs/app_faq.html#faq_number_grouping)。或者,当然,你可以?c全部写 -s,但我想这就是你想要避免的。
尝试:
cfg.setNumberFormat("#");
它对我有用
根据文档Configuration,可以在 Freemarker对象上设置它。
典型的功能弹簧上下文初始化:
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
    <property name="templateLoaderPaths">
        <list>
            <value>classpath:META-INF/templates</value>
        </list>
    </property>
    <property name="freemarkerSettings">
        <props>
            <prop key="number_format">computer</prop>
        </props>
    </property>
    <property name="defaultEncoding" value="UTF-8" />
</bean>
<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
    <property name="prefix" value="" />
    <property name="suffix" value=".ftl" />
    <property name="cache" value="true" />
    <property name="contentType" value="text/html;charset=UTF-8" />
    <property name="requestContextAttribute" value="request" />
</bean>
请注意,number_format(或新版本 freemarker 的 numberFormat)设置为FreeMarkerConfigurer.
对于您的问题...我的猜测是您将其设置为错误的配置对象或范围。
它在最新版本中工作,我可以在我的 Spring Boot 应用程序中执行此操作
freeMarkerConfigurer.getConfiguration().setNumberFormat("computer");