Atitit java字符串模板渲染总结

目录

1. 总结:指标 1

1.1. 支持中文变量 提升可读性 1

1.2. 变量placeholder简单性,,velo可以直接¥前导简单。。Free的必须全包 2

1.3. 支持位置索引,命名索引 2

2. 选项 2

2.1. Diy模板引擎atiTemplt,直接支持以上所有指标 2

2.2. 对于简单的格式化或字符串组装,使用MessageFormat.format。格式化处理更丰富要使用String.format方法 2

2.3. Replace法,支持命名变量 2

2.4. Table of Contents 2

3. Ati总结 3

4. Oth 3

4.1. 1. MessageFormat  3

4.2. 3。 Velocity  5

  1. 总结:指标

    1. 支持中文变量 提升可读性

只有freemark支持,velo貌似不支持

  1. 变量placeholder简单性,,velo可以直接¥前导简单。。Free的必须全包
  2. 支持位置索引,命名索引

Velo,和free默认不支持,可以自己diy实习基于他们。。使用obj数组参数模式。

  1. 选项

    1. Diy模板引擎atiTemplt,直接支持以上所有指标
    2. 对于简单的格式化或字符串组装,使用MessageFormat.format。格式化处理更丰富要使用String.format方法
    3. Replace法,支持命名变量
    4. Table of Contents
  • 1. ++
  • 2. StringBuffer / StringBuilder
  • 3. StringUtil.format(String, Object…​)
  • 4. MessageFormatUtil.format(String, Object…​)
  • 5. Slf4jUtil.format(String, Object…​)
  • 6. StringUtil.replace(CharSequence, Map<String, V>)
  • 7. VelocityUtil.parseString(String, Map<String, ?>)
  • 8. VelocityUtil.parseTemplateWithClasspathResourceLoader(String, Map<String, ?>)
  • 9. 性能对比
  • 10. 参考

3、"{}"用来明确标识Velocity变量;
比如在页面中,页面中有一个$someonename,此时,Velocity将把someonename作为变量名,若我们程序是想在someone这个变量的后面紧接着显示name字符,则上面的标签应该改成${someone}name。

4

  1. Ati总结

优先使用MessageFormat  ,三个变量内。。因为都是索引位置变量但是简单。。

其次使用velocity模板,因为变量定义简单。。。

Freemark的必须全包含麻烦些

4、"!"用来强制把不存在的变量显示为空白。
如当页面中包含$msg,如果msg对象有值,将显示msg的值,如果不存在msg对象同,则在页面中将显示$msg字符。这是我们不希望的,为了把不存在的变量或变量值为null的对象显示为空白,则只需要在变量名前加一个“!”号即可。

五、引用                                

引用语句就是对引擎上下文对象中的属性进行操作。语法方面分为常规语法( $属性 )和正规语法( ${属性} )。在普通模式下上述两种写法,当引擎上下文对象中没有对应的属性时,最终结果会直接输出 $属性 或 ${属性} ,若要不输出则需要改写为 $!属性 和 $!{属性} 。

  1. Oth
  1. 1. MessageFormat 

优点:不需要映入第三方类库,门槛低 
缺点:使用序号来和后面参数约定,耦合性比较大,维护成本高,可重用性不高 
      对于所有信息都放到bean中,需要后期将对象一个个的get属性,开发代码比较多

Java代码  

  1. System.out.println(MessageFormat.format("我是{0},我来自{1},今年{2}岁", "中国人", "北京", "22"));

2. freemarker 

优点:重用性高,只要传入待替换string及数据对象,可以完成所有替换 
      可维护性高,模板修改,替换代码不需要变更 
缺点:bean属性删除的时候替换代码不会报错,导致原值直接输出 需要映入第三方类库

Java代码  

  1. try {
  2. Configuration cfg = new Configuration();
  3. StringTemplateLoader stl =  new StringTemplateLoader();
  4. stl.putTemplate("", "hello:${name}");
  5. cfg.setTemplateLoader(stl);
  6. Template template = cfg.getTemplate("");
  7. Bean b = new Bean();
  8. b.setName("aaa");
  9. StringWriter writer = new StringWriter();
  10. template.process(b, writer);
  11. System.out.println(writer.toString());
  12. catch (Exception e) {
  13. // TODO Auto-generated catch block
  14. e.printStackTrace();
  15. }      
    1. 3。 Velocity 

优点:键值对的形式,由于MessageFormat不需要维护序号 
缺点:重用性不高;需要映入第三方类库

Java代码  

  1. Context context  = new VelocityContext();
  2. context.put("name", "aaa");
  3. StringWriter sw = new StringWriter();
  4. try {
  5. Velocity.evaluate(context, sw, "velocity", "hello:${name}");
  6. catch (Exception e) {
  7. // TODO Auto-generated catch block
  8. e.printStackTrace();
  9. }
  10. System.out.println(sw.toString());

Velocity基本常用语法 - @ 小浩 - 博客园.mhtml

Velocity魔法堂系列二:VTL语法详解 - ^_^肥仔John - 博客园.mhtml

Atitit java字符串模板渲染总结 目录 1. 总结:指标 1 1.1. 支持中文变量 提升可读性 1 1.2. 变量placeholder简单性,,velo可以直接¥前导简单。。Free的相关推荐

  1. Java字符串模板替换(模板渲染)

    http://www.dutycode.com/post-168.html java渲染字符串模板,也就是说在java字符串模板中设置变量字符串,使用变量去渲染指定模板中设置好的变量字符串.下面介绍4 ...

  2. Java字符串模板格式化汇总8法(附性能对比)

    Java字符串模板格式化汇总8法(附性能对比) 结论: 1. 循环中, 不要用+进行字符串拼接, 而用StringBuilder.append()方法 2. 非循环中, 字符串拼接使用+性能最高, 其 ...

  3. vue html标签、Element-ui vue template字符串模板渲染

    1.新建DynamicTemplate.vue页面 <script> import Vue from "vue"; export default {name: 'Dyn ...

  4. flask mysql项目模板渲染_Flask框架模板渲染操作简单示例

    本文实例讲述了Flask框架模板渲染操作.分享给大家供大家参考,具体如下: from flask import render_template from flask import Flask from ...

  5. 在Unix/Linux上令(java)JVM支持中文输出

    在Unix/Linux上令(java)JVM支持中文输出 一.在Unix/Linux上令JVM支持中文输出 如 果用户使用的是UNIX的远程服务器,就会遇到中文字体在图像中输出的问题,特别是由于许多管 ...

  6. java根据Freemarker模板渲染出Excel文件并在浏览器中下载

    **java根据Freemarker模板渲染出Excel文件并在浏览器中下载** 准备工作 1.导入的依赖 2.创建模板 Freemrker语法大全: [Freemarker语法使用请点击该链接跳转学 ...

  7. Vue模板字符串的使用,【html标签、Element-uivue template模板渲染】

    文章目录 技术 背景 关于在vue 中 html标签的渲染与使用[v-html] 关于在vue 中element组件标签模板渲染与使用 技术 Vue父子组件传值 Vue render函数的引用 Vue ...

  8. 使用arttemplate js模板引擎,直接用模板渲染,减少字符串拼接。

    html: <div class="box"></div><script id="t1" type="text/html ...

  9. java 邮件模板_Spring Boot 优雅地发送邮件

    最近在项目开发中有向使用者发送报警通知的功能,其中报警媒介就包括邮件,这篇文章就简单介绍了 Spring Boot 如何快速集成实现邮件发送. 通常在实际项目中,也有其他很多地方会用到邮件发送,比如通 ...

  10. ES6, Angular,React和ABAP中的String Template(字符串模板)

    String Template(字符串模板)在很多编程语言和框架中都支持,是一个很有用的特性.本文将Jerry工作中使用到的String Template的特性做一个总结. ES6 阮一峰老师有一个专 ...

最新文章

  1. Go基础知识学习(6) 接口
  2. java phantomjd linux_linux安装phantomjs
  3. awbeci网站之技术篇
  4. Nagios 监控 ESXi
  5. dubbo自定义异常传递信息丢失问题解决
  6. 云钉一体应用创新:音视频如何带来灵活高效的协同体验
  7. C语言 文件读写 fputs 函数 - C语言零基础入门教程
  8. 推荐一款配有强大数据管理和可视化ETL的BI工具
  9. 一代人的回忆!国产游戏机传奇落幕:官网已无法正常访问
  10. Boostrap日期时间选择器
  11. python-mysql数据插入与查询
  12. Java多线程(六)线程池
  13. 为什么哲学是最难的学科_为什么来读哲学系?
  14. Windows自动更新进程wuauclt.exe 进程服务关闭方法
  15. 人生无常,心安便是归处
  16. 基于神经网络识别抑郁症附matlab代码
  17. docker+robot framework+selenium并发web应用UI自动化测试实践
  18. python分析红楼梦中人物形象_《红楼梦》三大人物形象分析
  19. java监控屏幕_java实现人工智能化屏幕监控窗口
  20. USGS Landsat 8 Collection 2 Level 1数据正确姿势下载

热门文章

  1. 计算机软件行业职业病,IT行业的六大职业病,看看你有没有中
  2. 微软消息队列MSMQ 传输异常的总结!
  3. 最短路径顶点算法:最短路径之迪杰斯特拉(Dijkstra)算法Strut2教程-java教程
  4. ubuntu 9.10修改grub启动项的方法
  5. MySql-Mysql技术内幕~SQL编程学习笔记(N)
  6. MySQL-第十一篇JDBC典型用法
  7. Leetcode题目practice
  8. phpstorm 新加入项目的文件--全局搜索不到 ctrl + shift + R
  9. AC日记——「SCOI2015」情报传递 LiBreOJ 2011
  10. 华为OpenStack开源团队人才招募中