jmte 模版引擎

jmte 是一个简单,但是高效的模版引擎,graylog 对于通知的处理就使用了此模版引擎,使用简单,而且比较灵活

参考使用

  • 流程
    创建引擎,注册类型渲染(不是必须的),使用tranform 进行渲染处理
  • 参考代码
    MyRenderDemo
 
public class MyRenderDemo {
    static  Engine engine ;
    static  {
         engine = Engine.createEngine();
         engine.registerRenderer(User.class,new MyRender());
    }
    public  static <T>  String  render(String template, Map<String,Object> context) {
        return engine.transform(template,context);
    }
}

MyRender

public class MyRender implements Renderer<User> {
    @Override
    public String render(User o, Locale locale, Map model) {
        return  String.format("%d----------%s------%s",o.getAge(),o.getName(),o.getExtend());
    }
}

main 入口

String template = "${user.age}===${user.name}====${user.extend.type} ${user}";
String template2 = "{\n" +
        "\"nane\":\"${user.name}\",\n" +
        "\"age\":${user.age},\n" +
        " \"extend\":\"${user.extend}\"\n" +
        "}";
String template3 ="${foreach user.conf conf}\n" +
        "    <em>${conf.appId}</em>\n" +
        "    <em>${conf.version}</em>\n" +
        "${end}";
Map<String,Object> extendMsg = new HashMap<>();
extendMsg.put("type","local message");
Map<String,Object> context = new HashMap<>();
User user = new User();
user.setExtend(extendMsg);
user.setAge(333);
user.setConf(Arrays.asList(new Conf("ddd","333"),new Conf("rrrr","5555")));
user.setName("33333");
context.put("user",user);
String result = MyRenderDemo.render(template,context);
System.out.println(result);
String result2 = MyRenderDemo.render(template2,context);
System.out.println(result2);
String result3 = MyRenderDemo.render(template3,context);
System.out.println(result3);
  • 效果

 

 

说明

jmte 使用简单,支持的基本逻辑操作还是不少的,比如if foreach, 而且支持比较强大的自定义处理,对于cms 系统或者营销系统来说都是不错的选择

参考资料

https://www.tinymediamanager.org/docs/jmte
https://github.com/DJCordhose/jmte

posted on   荣锋亮  阅读(220)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2021-07-24 解决dremio 32k 大小的问题
2020-07-24 使用vfsgen 嵌入静态资源到golang
2020-07-24 一些很不错的golang 静态资源嵌入工具包
2020-07-24 Go command support for embedded static assets (files)
2019-07-24 关于新版本cube.js 集成preosto 的一个说明
2019-07-24 cube.js 新版本试用preosto
2019-07-24 关于redash 自定义可视化以及query runner 开发的几篇文章

导航

< 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
点击右上角即可分享
微信分享提示