原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11790482.html
Velocity学习:
1. velocity对大小写敏感 2. velocity的具体用法: import org.apache.velocity.Template; import org.apache.velocity.VelocityContext; import org.apache.velocity.app.VelocityEngine; import org.apache.velocity.runtime.RuntimeConstants; import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader; /** * 初始化Velocity引擎 */ VelocityEngine ve = new VelocityEngine(); ve.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath"); ve.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName()); ve.init(); /** * 获取模板,参数栏填写模板所在路径 */ Template t = ve.getTemplate("ureport-html/html-preview.html"); /** * 创建Velocity上下文 */ VelocityContext vctx = new VelocityContext(); /** * 放入数据 */ vctx.put("data", "data"); vctx.put("html", "htmldata"); /** * 创建一个任意形式的wirter,用于输出页面数据 * 假设前面有response传入 */ response.setContentType("text/html"); response.setCharacterEncoding("utf-8"); //Writer writer = new Writer(); //可以new一个Writer, 也可以从response中获取,设置输出的信息 PrintWriter writer = response.getWriter(); /** * 交给模板去处理 */ t.merge(vctx, writer) writer.close(); 3. 语法 #set( $foo = "Velocity" ) 设置变量的值 ## 单行注释 #* 随便什么内容 *# 多行注释 $user 引用Java中定义的对象 $user.name 引用user对象的属性 $user.setName("fw"); 方法引用 $user.getName(); 这个和$user.name 效果是一样的 如果有一个对象是引用的Java数组,那还可以直接调用Java数组的方法: $myarray.isEmpty() $myarray.size() $myarray.get(2) $myarray.set(1, 'test') ${userName} 这种写法也支持 $!userName 如果userName是空值, 那么就显示""空字符串 ${!userName} ${}是正式引用; !是静态引用 不解析模式:下面的代码将会输出 #[[ ]]#中的内容; #[[ #foreach ($item in $itemList) nothing will happen to $item #end ]]# 判断语句 If / ElseIf / Else && || ! #if () //do something #elseif () //do something #elseif () //do something #else //do something #end 循环 foreach #foreach ($name in $users) $name #end #include( "one.png","two.txt","three.html" ) #parse( "me.vm" )