(一) velocity语法与配置项

本文介绍了 Velocity 模板语言的基础语法,包括变量定义、注释、条件判断、循环操作等,并提供了丰富的代码示例。此外还介绍了如何使用 include 和 parse 标签引入外部文件,以及如何利用 define 和 macro 创建可复用的模板片段。

一、Velocity Template Language (VTL)介绍

   1、#set

        用来定义页面内使用的变量。例如:

        

#set( $monkey = $bill ) ## variable reference
#set( $monkey.Friend = "monica" ) ## string literal
#set( $monkey.Blame = $whitehouse.Leak ) ## property reference
#set( $monkey.Plan = $spindoctor.weave($web) ) ## method reference
#set( $monkey.Number = 123 ) ##number literal
#set( $monkey.Say = ["Not", $my, "fault"] ) ## ArrayList
#set( $monkey.Map = {"banana" : "good", "roast beef" : "bad"}) ## Map

   2、comment

 

    注释语法为# ,#* *#,#**  *#

 

   3、References

   References有三类,分别是variables, properties and methods,分别举例如下:

   variables:

 

$foo

    推荐写法 $!foo ,值不存在的时候,会用空字符串替代 

 

 

   properties :

$customer.Address

 

 

   methods:

   

$customer.getAddress()
$purchase.getTotal()
$page.setTitle( "My Home Page" )
$person.setAttributes( ["Strange", "Weird", "Excited"] )

 

 

   4、If / ElseIf / Else

   逻辑分支判断,例如

   

#if( $foo < 10 )
    <strong>Go North</strong>
#elseif( $foo == 10 )
    <strong>Go East</strong>
#elseif( $bar == 6 )
    <strong>Go South</strong>
#else
    <strong>Go West</strong>
#end    

 

 

 5、#foreach

  一下是该标签的常用代码实例片段,

 

一般的例子
 <ul>
#foreach( $product in $allProducts )
    <li>$product</li>
#end
</ul

Map循环的例子
<ul>
#foreach( $key in $allProducts.keySet() )
    <li>Key: $key -> Value: $allProducts.get($key)</li>
#end
</ul>

通过$foreach.count获取循环计数器,类似的还有($foreach.index,$foreach.last, $foreach.first等)
<table>
#foreach( $customer in $customerList )
    <tr><td>$foreach.count</td><td>$customer.Name</td></tr>
#end
</table>

通过$foreach.hasNext来判断是否是最后一次循环
#foreach( $customer in $customerList )
    $customer.Name#if( $foreach.hasNext ),#end
#end

通过#break来中断循环
## list first 5 customers only
#foreach( $customer in $customerList )
    #if( $foreach.count > 5 )
        #break
    #end
    $customer.Name
#end

 

6、#include

 该标签用来引入一个本地文件,引入的时候是静态引入,不会被Velocity Engine进行render.并且基于安全原因,被引入文件最好被放在TEMPLATE_ROOT下

   简单例子如下:

  

#include( "one.txt" )

如果有多个文件需要引入,可以用逗号分隔
#include( "one.gif","two.txt","three.htm" )

同时引入两个文件,其中一个文件用变量来指定路径以及文件名
#include( "greetings.txt", $seasonalstock )

 

 

   7、#parse

   对比#include,该标签可以包含VTL,可以被Velocity Engine进行render。但是只接受一个参数

 

  8、#stop

   该标签后面的html将不进行解析和展现

 

  9、#evaluate

   对字符串进行render,感觉用处不大

 

 10、#define

   相当于一个“函数”,定义一个代码块,可在后续进行引用,例如:

  

 #define($myfunc) $who,hello!#end

    #set($who="kongxuan")
    $myfunc

  运行结果:

  kongxuan,hello!

 

 11、#macro

 宏调用,是一个非常重要的指令。用来抽取页面中重复的VTL代码片段。

 

 

    #macro( tablerows $color $somelist )
        #foreach( $something in $somelist )
            <tr><td bgcolor=$color>$something</td></tr>
        #end
    #end

    #set( $greatlakes = ["Superior","Michigan","Huron","Erie","Ontario"] )

    #set( $color = "blue" )
    <table>
        #tablerows( $color $greatlakes )
    </table>

  注意:宏可以写在文件VM_global_library.vm里面,resource根目录下,且需要新增配置项:

  在velocity.properties中新增配置项velocimacro.library=VM_global_library.vm

 

二、velocity配置项

 

(待续)

 

 

 

 

 

 

 

 

 

    

      

 

【顶级EI复现】计及连锁故障传播路径的电力系统 N-k 多阶段双层优化及故障场景筛选模型(Matlab代码实现)内容概要:本文介绍了名为《【顶级EI复现】计及连锁故障传播路径的电力系统 N-k 多阶段双层优化及故障场景筛选模型(Matlab代码实现)》的研究资源,重点围绕电力系统中连锁故障的传播机制,提出了种N-k多阶段双层优化模型,并结合故障场景筛选方法提升系统安全性鲁棒性。该模型通过Matlab代码实现,可用于模拟复杂电力系统在多重故障下的响应特性,支持对关键故障路径的识别优化决策,适用于高水平科研复现工程仿真分析。文中还列举了大量相关技术方向的配套资源,涵盖智能优化算法、电力系统管理、机器学习、路径规划等多个领域,并提供了网盘链接以便获取完整代码资料。; 适合人群:具备电力系统、优化理论及Matlab编程基础的研究生、科研人员及从事能源系统安全分析的工程技术人员,尤其适合致力于高水平论文(如EI/SCI)复现创新的研究者。; 使用场景及目标:①复现顶级期刊关于N-k故障连锁传播的优化模型;②开展电力系统韧性评估、故障传播分析多阶段防御策略设计;③结合YALMIP等工具进行双层优化建模场景筛选算法开发;④支撑科研项目、学位论文或学术成果转化。; 阅读建议:建议读者按照文档提供的目录顺序系统学习,优先掌握双层优化场景筛选的核心思想,结合网盘中的Matlab代码进行调试实验,同时参考文中提及的智能算法电力系统建模范例,深化对复杂电力系统建模优化的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值