首页天道酬勤freemarker template error,parameternot found

freemarker template error,parameternot found

张世龙 05-12 18:36 9次浏览

在上一篇文章中,我用yaml进行了json的变量赋值,但我还是觉得很麻烦。 因此,使用Freemarker模板进行数据模板=out (JSON )变得很有用。

但是,在中途稍有错误,获取模板文件路径时,发现加载到FreeMarker源代码中的loaderClass是从调用方传递的test.class。 如果测试类位于src/main/test/java下,则表示FreeMarkerUtils类和。

*事件流. ftl文件和FreeMarkerUtils.java是

在src/main/java目录下

FreeMarkerTest.java文件

置于src/main/test/java下

从FreeMarker源代码中,ClassTemplaterLoader使用的Class是以前直接收到的Class。 这意味着我的测试类FreeMarkerTest.class。 这里会出现类似“域间”的问题,只能访问SRC/main/test/class

解决方案有三种:

1、这是将测试类放在src/main/test/下; 如果将测试类放在src/main/java/下,则不会找不到文件。

2、将模板文件. ftl放在src/main/test/*下;

3、我见过用src/main/java/下面的公共类class替换测试类传递的FreeMarkerTest.class,使用Junit的Test.class

突然发现,出现Template出现not found,终极原因不是上面所说的类存放的位置不对,是由于编译后的class里面(工程/target/class/*)里面相关目录下并没有将.ftl文件放进去,需要清理工程重新构建下才会出现(也有可能还是没有,刷新下工程说不定就有了),如果再没有可直接将文件放到目录下。

依赖于pom.xml

ependencygroupidfreemarker/groupidartifactidfreemarker/artifactidversion2.3.9/version/dependency main函数:

package com.mdl.FreeMarker; import java.util.HashMap; import java.util.Map; publicclassfmtest { publicstaticvoidmain (string [ ] args ) freemarkerutilsutl=newfreemarkerutils (/files/ftl )、' mapapes context.put('size ',0 ); context.put(GTE_val,(111111497283200000 ); context.put(LTE_val,) 1497928996980 ); context.put(min_val ),(1497283200000 ); context.put(max_val,) 1497928996980 ); context.put (间隔,) 21526566ms ); string JSON=utl.setvalue (context ); system.out.println(JSON; }工具类:

package com.mdl.FreeMarker; import java.io.IOException; import java.io.StringWriter; import java.util.Map; import com.Google.gson.JSON object; import com.Google.gson.JSON parser; 导入freemarker.cache.classtemplateloader; 导入freemarker.template.configuration; import freemarker.template.defaultobjectwrapper; 导入freemarker.template.template; 导入freemarker.template.template exception; publicclassfreemarkerutils {隐私保护ftl _ n; 隐私配置配置; publicfreemarkerutils (string path,String ftl_name ) { this.ftl_n=ftl_name; 配置=new配置(; configuration.setobjectwrapper (newdefaultobjectwrapper () ); 配置. settemplateloader (newclasstemplateloader (getclass ),path ); }公共字符串设置(映射,对象上下文) { JSON对象返回数据=null; try { template template=configuration.get template (ftl _ n '.ftl ' ); string writer writer=new string writer (; template.process (上下文,writer ); String result=writer.toString (; returnData=new JsonParser ().parse (result ).getAsJsonObject ); //将模板文件转换为json对象,然后单击json字符串}catch(ioexceptione ) { e.printStackTrace ); } catch (模板堆栈) { e.printStackTrace ); } return returnData.toString (; } }事件流. ftl模板文件

{ 'size': ${size},query ' : { ' constant _ score ' : { ' filter ' : { ' range ' : } ' last _ _。 ' aggs ' : { ' by _ time ' : { ' date _ histogram ' : { ' field ' : } ' extended _ bounds ' : { ' min ' ' aggs ' : { ' event _ status _ group ' : { ' filters ' : } ' filters ' : { ' info ' : { ' match _ Phra ' warning ' : ' match _ phrase ' : { ' alert _ status ' : ' warning ' },' error ' : { ' match _ Phra sing }

计算机输入设备,主机网卡 wps初学者入门教程,freemarker过时了吗