栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java模板引擎StringTemplate4 - EMail模板格式化

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java模板引擎StringTemplate4 - EMail模板格式化

什么是StringTemplate4

StringTemplate4是轻量级模板引擎,Antlr 组织开发,主要用于java代码,网页,邮件,或其他格式化文本的生成,只有一个依赖项。

模板引擎都有语法,如果我们要使用,就必须掌握语法。这里是StringTemplate4 项目地址,本文不讲解语法,只是用一个简单的示例,展示StringTemplate4的功能。

使用版本:

  • JDK 11
  • StringTemplate4 4.3.1
开发项目

在POM文件中引入项目依赖

    
        
            org.antlr
            ST4
          
    

编写EMail模板文件email.stg,存放到resources目录下,文件内容如下:

email(order,separator) ::= <<
Hello, dear customer!

On  we received the following order:

Shipping address:
 


x  à  = };separator="n">
plus shipping = 

Total = 

Thank you for ordering!
>>

使用StringTemplate4格式化非常简单,如下:

STGroup group = new STGroupFile("email.stg");
ST st = group.getInstanceOf("email");
st.add("order", order);
st.add("separator", "----------------");
        
System.out.println(st.render());

其中 order 变量就是数据。格式化的Email内容输出到控制台。格式化结果如下:

Hello, Oliver!

On Fri Jan 28 14:35:02 CST 2011 we received the following order:

Shipping address:
Oliver Zeigermann
Gaußstraße 180
22765 Hamburg
GERMANY

1x How to become famous à 17.80 = 17.80
2x Cool stuff à 1.00 = 2.00
plus shipping = 3.00
----------------
Total = 22.80

Thank you for ordering!

如果我们需要Order(订单)中关于金钱的信息格式化输出,该如何操作?这个很简单,我们需要定义格式化金钱的类(BigDecimalRenderer.java):

public static class BigDecimalRenderer implements AttributeRenderer {
        private static final DecimalFormat DECIMAL_FORMAT = new DecimalFormat(
                "##,##0.00", DecimalFormatSymbols.getInstance(Locale.GERMANY));
        private static final String EURO_CHARACTER = "u20AC";

        @Override
        public String toString(BigDecimal value, String formatString, Locale locale) {
            if (formatString.equals("currency")) {
                    NumberFormat numberFormat = DECIMAL_FORMAT;
                    String formatted = numberFormat.format(value) + " "
                            + EURO_CHARACTER;
                    return formatted;
            }
            return value.toString();
        }
    }

然后注册实例即可,如下:

        STGroup group = new STGroupFile("email.stg");
        group.registerRenderer(Date.class, new DateRenderer());
        group.registerRenderer(BigDecimal.class, new BigDecimalRenderer());
        ST st = group.getInstanceOf("email");
        st.add("order", order);
        st.add("separator", "----------------");
        
        System.out.println(st.render());

DateRenderer是日期格式化类,框架自带的。

最后

本文的全部代码,可以在这里查看string-template4,感谢支持!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/644207.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号