FreeMarker(六)全局配置

全局配置基本与有关freemarker.template.Configuration相关。

复制代码
/**
 * 较通用的FreeMarkers工具类
 *
 * @author ChenSS 2017-10-19
 * @date 2020-12-21 Mr.css 尝试使用ClassForTemplateLoading
 * @since FreeMarker Version2.3.23
 */
public class FreeMarkers {
    private static Configuration config;
    private static final Version VERSION = new Version("2.3.23");
    private static final String FILE_ROOT = "tmp/";

    static {
        try {
            config = new Configuration(VERSION);
            config.setEncoding(P.LOCALE, Charset.defaultCharset().name());
            config.setNumberFormat("0.####");
            config.setBooleanFormat("true,false");
            config.setWhitespaceStripping(true);
            config.setClassicCompatible(true);
            config.setClassForTemplateLoading(ClassPathResource.class, FILE_ROOT);
        } catch (Exception e) {
            throw new SystemError("FreeMarker config error: ", e);
        }
    }
}
复制代码

共享变量

调用Configuration对象的setSharedVariable()方法即可。

    public static void main(String[] args) throws Exception {
        Map<String, Object> map = new HashMap<>();
        map.put("name", "xiaoming");
        Configuration cfg = FreeMarkers.defaultConfiguration();
        cfg.setSharedVariable("share", "共享变量");
        cfg.setSharedVaribles(map); 

        System.out.println(FreeMarkers.fileToStr("test1.ftl", map));
        System.out.println(FreeMarkers.fileToStr("test2.ftl", map));
    }

全局的数据格式化配置

调用Configuration特定函数即可。

    setNumberFormat("0.####");
    setDateFormat("yyyy-MM-dd");
    setTimeFormat("HH:mm:ss");
    setDateTimeFormat("yyyy-MM-dd HH:mm:ss");
    setBooleanFormat("true,false");
    setWhitespaceStripping(true);
    setClassicCompatible(true);
    setDirectoryForTemplateLoading(File dir):设置模板存放路径——文件路径;
    setServletContextForTemplateLoading(Object sctxt, String path):设置模板存放路径——Servlet上下文;
    setClassForTemplateLoading(Class clazz, String pathPrefix):设置模板存放路径——类路径;
    setTemplateUpdateDelay(int delay):设置模板文件更新时间(毫秒);
    setStrictSyntaxMode(boolean b):开启/关闭严格的语法,默认为true;
    setWhitespaceStripping(boolean b):开启/关闭空白移除,默认为true;
    setTagSyntax(int tagSyntax):设置ftl标签的类型;
         ?AUTO_DETECT_TAG_SYNTAX: 可以自定义格式,系统会选择第一个标签作为参照;
         ?ANGLE_BRACKET_TAG_SYNTAX: 使用尖括号;
         ?SQUARE_BRACKET_TAG_SYNTAX: 使用方括号;
    setSharedVariable(String name, TemplateModel tm):设置共享变量;
    setSharedVariable(String name, Object obj):设置共享变量;
    setAllSharedVariables(TemplateHashModelEx hash):设置共享变量;
    clearSharedVariables():清除共享变量;
    clearTemplateCache():清除缓存;
    setSetting(String key, String value):为freemarker做配置属性的入口;
    getTemplate:一系列获取Template的方法;

使用<#setting>标签数据格式化配置

在文件中使用此标签做全局的设置

// 用来设置整个系统的一个环境 
locale // zh_CN 中文环境
number_format 
boolean_format 
date_format
time_format
datetime_format 
time_zone 
classic_compatible
// 例1:
<#setting number_format="percent"/>    // 设置数字默认输出方式('percent',百分比)

// 例2:
// 假如当前是匈牙利的设置,然后修改成美国
${1.2} // 输出1,2
<#setting locale="en_US"> 
${1.2} // 输出1.2,因为匈牙利是采用", "作为十进制的分隔符,美国是用". "

posted on   疯狂的妞妞  阅读(1468)  评论(0编辑  收藏  举报

(评论功能已被禁用)
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示