欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Velociy 1.6的新特性,记录一下 SUN 

程序员文章站 2022-06-05 21:26:00
...
Velociy 1.6,其中新增了一些非常有用的指令和功能,并修复了一些bug,用起来的确方便多了。
ADD:表示是新增的功能

TYPE    CHANGE eg.   
ADD 增加#define指令 定义可以引用的VTL渲染块 #define( $foo )Hello, $bar!#end
#set( $bar = 'world')
$foo 输出: Hello, world!   
ADD 增加可以跳出#foreach循环的#break指令 #foreac($a in $list)
  #if($a==1)
     #break
  #end
#end   
ADD 增加#foreach指令中使用的VTL语法变量 $velocityHasNext判断是否还有下一个元素 #foreach( $customer in $customerList )

    $customer.Name #if( $velocityHasNext ), #end

#end

  配置:

directive.foreach.counter.name = velocityCount

directive.foreach.iterator.name = velocityHasNext   
ADD 允许模板中使用数组时当做List来使用,意味着可以使用list的方法 $myarray.isEmpty()

$myarray.size()

$myarray.get(2)

$myarray.set(1, 'test')   
ADD 支持模板上调用变参数方法 对于public void setPlanets(String... planets)
或者 public void setPlanets(String[] planets)
模板上可以这样调用:
$sun.setPlanets('Earth', 'Mars', 'Neptune')

$sun.setPlanets('Mercury')

$sun.setPlanets()   
ADD 增加严格引用检查设置,必须在#set或者context中设置的变量才能使用,否则会抛出exception(可配置开启关闭) 如果$foo不存在,并且严格引用检查开启

$foo                         ## Exception

#set($bar = $foo)            ## Exception

#if($foo == $bar)#end        ## Exception

#foreach($item in $foo)#end  ## Exception   
ADD 增加模板上定义map #set( $monkey.Map = {"banana" : "good", "roast beef" : "bad"}) ## Map

  使用:

    $monkey.Map.get("banana")

  或  $monkey.Map.banana   
ADD 增加#literal指令来指定大块的不需要进行渲染的内容(类似于\(escaping)的多行版本用法) 模板中:

#literal()

#foreach ($woogie in $boogie)

  nothing will happen to $woogie

#end

  则输出:

#foreach ($woogie in $boogie)

  nothing will happen to $woogie

#end

 

 

 

#end   
ADD 增加#evaluate指令在模板渲染时动态执行字符串(类似于JS中的eval()方法) #set($source1 = "abc")

#set($select = "1")

#set($dynamicsource = "$source$select")

## $dynamicsource is now the string '$source1'

#evaluate($dynamicsource)


相关标签: SUN