关于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");