首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Velocity 基础语法

Velocity 基础语法

作者头像
问天丶天问
发布2018-06-19 16:51:43
发布2018-06-19 16:51:43
2.2K0
举报
文章被收录于专栏:问天丶天问问天丶天问

#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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年03月30日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档