java VelocityEngine 属性key值得组成说明
2022/4/21 14:12:58
本文主要是介绍java VelocityEngine 属性key值得组成说明,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
今天看了下模板类VelocityEngine得使用,代码如下:
public static String testVelocityEngine() throws IOException { //初始化 VelocityEngine ve = new VelocityEngine(); ve.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath"); //ve.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName()); ve.setProperty("classpath.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); ve.init(); // 载入(获取)模板对象 Template t = ve.getTemplate("HelloVelocity.vm"); VelocityContext ctx = new VelocityContext(); // 域对象加入参数值 ctx.put("name", "best"); ctx.put("date", (new Date()).toString()); // list集合 List list = new ArrayList(); list.add("1111");list.add("2222"); list.add("3333");list.add("4444"); ctx.put("list", list); //内容打印 // StringWriter sw = new StringWriter(); // t.merge(ctx, sw); // System.out.println(sw.toString()); //写入文件 File file = new File("E:\\MyWorkSpace\\StudySpring\\Study-Velocity\\src\\main\\resources\\out.txt"); FileWriter writer = new FileWriter(file); t.merge(ctx, writer); writer.flush(); writer.close(); return "testVelocityEngine"; }View Code
Velocity得模板语法网上有很多文档,在此不做讨论! 本例模板如下:
#set( $iAmVariable = "good!" ) Welcome $name to velocity.com today is $date. #foreach ($i in $list) $i #end $iAmVariableView Code
我的问题就是:在 ve.setProperty("classpath.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); 里,这个key ("classpath.resource.loader.class")是怎么来的?这个肯定不是乱写得,那如果我用其他得加载器,这个key值应该怎么填呢?毕竟还有很多其他类加载器(当然可能用不到,此处只做研究),如下图
经过查看源代码,其实这个key是由三部分组成得:
1.第一部分很显然,ve.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath");决定key得第一部分内容:
2.第二部分内容由 RuntimeConstants.RESOURCE_LOADER里得宏定义确定得
3.第三部分,就得根据源代码里得获取情况去分别去看看源代码了
下面是源码:
此文件是通过RuntimeInstance里得initializeResourceManager()方法过来得,而此方法中
String rm = getString(RuntimeConstants.RESOURCE_MANAGER_CLASS); 其实走的是在前面截图里的默认配置velocity.properties, 此处说明一下,希望大家不要迷惑,很多配置,在默认配置里其实已经有了,自行查看 以上解决了1、2两点的由来,相对比较固定!
第三部分源码如下:
源码里,第三部分的key其实是写死的"class"/"instance",这些都是固定的: 所以,我们如果设置一个ve.setProperty("classpath.resource.loader.instance", instance); 那么ve.setProperty("classpath.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");的设置其实是不生效的,大家自行查看源码吧,篇幅太长,我折叠了! 到此,这三部分的由来基本说清楚了! 下面是官网地址:https://velocity.apache.org/engine/1.6.2/ 这是1.6.2版本,大家可以查看其他版本的使用情况 当然还有很多其他key值得使用情况,基本上可以通过查看源码、官网、默认配置这三个途径去了解!祝好运!
这篇关于java VelocityEngine 属性key值得组成说明的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南