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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏从零开始学自动化测试

appium+python自动化33-解锁九宫格(TouchAction)

一、TouchAction 1.源码可以在这个路径找到:Lib\site-packages\appium\webdriver\common\touch_acti...

40530
来自专栏我的小碗汤

Go语言中数组和切片笔记

今天有位大佬问我一个关于切片很简单的一个问题,却把我难住了,所以是时候了解下切片的底层了。

11030
来自专栏对角另一面

读Zepto源码之样式操作

这篇依然是跟 dom 相关的方法,侧重点是操作样式的方法。 读Zepto源码系列文章已经放到了github上,欢迎star: reading-zepto 源码版...

24800
来自专栏marsggbo

jquery的html,text,val

.html()用为读取和修改元素的HTML标签 .text()用来读取或修改元素的纯文本内容 .val()用来读取或修改表单元素的value值。 这三个方法功能...

23350
来自专栏咸鱼不闲

jsoup爬虫工具的简单使用

解决方案: 1.通过url 获得doucment对象, 2.调用select()等方法获得Elements对象, 3.调用.text()等方法,获得自己想要的内...

55240
来自专栏有趣的django

4.自定义序列类

19400
来自专栏一直在跳坑然后爬坑

如何通过自定义View方式模拟SVG并实现动画

3.然后我们要进行对五角星动画的裁剪,涉及到的方法是PathMeasure的getLength和getSegment方法,getLength()不用多说,就是用...

12910
来自专栏nummy

jQuery串联操作

把与表达式匹配的元素添加到jQuery对象中。这个函数可以用于连接分别与两个表达式匹配的元素结果集。

6310
来自专栏Python

JavaScript基础

一 JavaScript的基础 1.1 JS的引入方式 1 直接编写 <script> alert('hello yuan') ...

27280
来自专栏攻城狮的动态

简谈选择排序

34950

扫码关注云+社区

领取腾讯云代金券