Velocity 基础语法


#set($count=$Integer.parseInt($auth_count))
#foreach($i in [1..$count])
$application_prefix.trim()as_hs_auth00${i}
#end

1通用规则
1) " # ":用来标识Velocity的脚本语句,包括#set、#if、#else、#end、#foreach等。
2) " $ ":用来标识一个对象(或理解为变量)。
3) " {} ":用来明确标识Velocity变量。
2 简单替换
   ( 适用于简单的变量替换
      语法
                     name: 变量名(变量名中除下划线、连接符外,不能含有其他特殊字符)
                     ${name} 有值则替换;无则原样。
                     $!{name} 有值则替换;无则为空。   
 
eg: ${}  $!{}
参数 :{user=root}
            替换前 :  
                 <username>${user}</username>
                 <workspace>${workspace}</workspace>
                 <database>$!{database}</database>
 
3 循环遍历
适用于deploy.xml中的表格类型参数、多选类型参数、服务器参数
语法
         a. 遍历数组
              #foreach($var in $arrays ) // 集合包含下面三种Vector,Hashtable,Array
                       ......
              #end
         b. 循环对象
        ⅰ第一种方法
              #foreach($obj in $data.entrySet())                                          <${obj.getKey()}>${obj.value}</${obj.getKey()}> //获取key-value
               #end
         ⅱ第二种方法
               #foreach($key in $data.keySet())
                   <$key>$data.get($key)</$key> //获取key-value
              #end
4多层遍历循环嵌套
 ( 适用于类似表格嵌套的场景
4.1 效果
    红色部分:可变参数 ; 蓝色标签:闭合段可以出现多个 ;)
< servers   keypattern=".*"  desc="start1">
 < server  name="server1" host="10.139.102.127" port="6379" >
                <param name="minIdle" value="10" />
          <param name="maxIdle" value="100" />
  <param name="maxActive" value="1000" />
<param name="maxWait" value="3000" />
<param name="readOnly" value="false" />
<param name="slaveof" value="servername" />
<param name="save" value="false" />
</ server >       
< server  name="server3" host="10.139.54.65" port="6379" >
<param name="minIdle" value="10"/>
<param name="maxIdle" value="100"/>
<param name="maxActive" value="500"/>
<param name="maxWait" value="3000"/>
<param name="readOnly" value="false"/>
<param name="slaveof" value="servername"/>
<param name="save" value="false"/>
</ server >
</ servers >
< servers   keypattern="^2.*"  desc="start2">
< server  name="server2"   host="127.0.0.1"   port="6390" >
<param name="minIdle" value="10" />
<param name="maxIdle" value="100" />
<param name="maxActive" value="500" />
<param name="maxWait" value="3000" />
<param name="readOnly" value="false" />
<param name="slaveof" value="servername" />
<param name="save" value="false" />
</ server >
< server  name="server3" host="127.0.0.1" port="6391" >
<param name="minIdle" value="10" />
<param name="maxIdle" value="100" />
<param name="maxActive" value="500" />
<param name="maxWait" value="10000" />
<param name="readOnly" value="true" />
<param name="slaveof" value="servername" />
<param name="save" value="false" />
</ server >
</ servers >
 
4.2 deploy.xml中参数配置
<!--  一个表格实现表格嵌套    -->
<variables describe="集群基本参数">
     <field name="servers" label="服务配置"  type="grid"  >
         <field name="keypattern" label="keypattern" type="input"></field>
         <field name="server_ip" label="服务IP" type="input"></field>
         <field name="server_port" label="服务PORT" type="input"></field>
         <field name="save" label="是否保存" type="select" options="false:否;true:是">false</field>
     </field>
</variables>
4.3 velocity语法模板
#set($serverIds="") //设置变量
#foreach($server in $servers)
     #set($count=0) 
     #if($serverIds.length()>0)
         #foreach($value in $serverIds.split(";"))
              #if($value != $server.keypattern )
                   #set($count=$count+1)
              #end
         #end
         #if($count == $serverIds.split(";").size())
              #set($serverIds=$serverIds+";"+$server.keypattern)
         #end
     #else
         #set($serverIds=$server.keypattern)
     #end
#end   
 //以上绿色部分是将效果中servers的 keypattern 值去重复并缓存供下面使用
#foreach($value in $serverIds.split(";"))   //取出已缓存的servers的 keypattern
     <servers keypattern="$value" desc="start1">   //生成servers标签
         #foreach($server in $servers)     //遍历表格参数
//将表格行参数中 keypattern 值和缓存中的比较,避免生成多段servers标签并为其添加子server标签
             #if($value==$server.keypattern)
                   <server name="$server.server_name" host="$server.server_ip" port="$server.server_port">
                      <param name="minIdle" value="10" />
                      <param name="maxIdle" value="100" />
                      <param name="maxActive" value="1000" />
                      <param name="maxWait" value="3000" />
                      <param name="readOnly" value="false" />
                      <param name="slaveof" value="servername" />
                      <param name="save" value="$server.save" />
                   </server>
              #end
         #end
     </servers>

#end

猜你喜欢

转载自blog.csdn.net/u012516524/article/details/79752870