FTL tags标签(FreeMarker 模板的语言标签):FTL标签和HTML标签有一点相似,但是它们是FreeMarker的指令而且是不会直接输出出来的东西。这些标签的使用一般以符号#开头。
用户自定义的FTL标签使用@符号来代替#
Comments注释:FreeMarker的注释和HTML的注释相似,但是它用<#--和-->来分隔的。任何介于这两个分隔符(包含分隔符本身)之间内容会被FreeMarker忽略,就不会输出出来了。
指令:
if指令
<#if condition> ... <#elseif condition2> ... <#elseif condition3> ... ... <#else> ... </#if>
<#if animals.python.price == 0> Pythons are free today! </#if> <#if animals.python.price < animals.elephant.price> Pythons are cheaper than elephants today. <#else> Pythons are not cheaper than elephants today. </#if>
switch,case,default,break指令
<#switch value> <#case refValue1> ... <#break> <#case refValue2> ... <#break> ... <#case refValueN> ... <#break> <#default> ... </#switch>
list,break 指令
<#list sequence as item> ... </#list>
你可以使用list指令来处理模板的一个部分中的一个序列中包含的各个变量。在开始标签和结束标签中的代码将会被处理,首先是第一个子变量,然后是第二个子变量,接着是第三个子变量,等等,直到超过最后一个。对于每个变量,这样的迭代中循环变量将会包含当前的子变量。
在list循环中,有两个特殊的循环变量可用:
item_index:这是一个包含当前项在循环中的步进索引的数值。
item_has_next:来辨别当前项是否是序列的最后一项的布尔值。
<#assign seq = ["winter", "spring", "summer", "autumn"]> <#list seq as x> ${x_index + 1}. ${x}<#if x_has_next>,</#if> </#list>
include指令
<#include path> or <#include path options>
这里:
path:要包含文件的路径;一个算作是字符串的表达式。(用其他话说,它不用是一个固定的字符串,它也可以是像profile.baseDir + "/menu.ftl"这样的东西。)
1. winter,
2. spring,
3. summer,
4. autumn
<#assign x=3>
<#list 1..x as i>
${i}
</#list>
1
2
3
<#list seq as x>
${x}
<#if x = "spring"><#break></#if>
</#list>
<#compress> ... </#compress> options:一个或多个这样的选项:encoding=encoding, parse=parse
encoding:算作是字符串的表达式
parse:算作是布尔值的表达式(为了向下兼容,也接受一部分字符串值)
import 指令
<#import path as hash>
这里:
path:模板的路径。这是一个算作是字符串的表达式。(换句话说,它不是一个固定的字符串,它可以是这样的一些东西,比如,profile.baseDir + "/menu.ftl"。)
hash:哈希表变量的结束名称,你可以由它来访问命名空间。这不是表达式。
<#import "/libs/mylib.ftl" as my> <@my.copyright date="1999-2002"/>noparse指令
<#noparse> ... </#noparse>FreeMarker不会在这个指令体中间寻找FTL标签,插值和其他特殊的字符序列,除了noparse的结束标记。
compress指令
escape,noescape指令
<#escape identifier as expression> ... <#noescape>...</#noescape> ... </#escape>assign 指令
<#assign name=value> or <#assign name1=value1 name2=value2 ... nameN=valueN> or <#assign same as above... in namespacehash> or <#assign name> capture this </#assign> or <#assign name in namespacehash> capture this </#assign>使用这个指令你可以创建一个新的变量,或者替换一个已经存在的变量。注意仅仅顶级变量可以被创建/替换
global 指令
<#global name=value> or <#global name1=value1 name2=value2 ... nameN=valueN> or <#global name> capture this </#global>这个指令和assign相似,但是被创建的变量在所有的命名空间中都可见,但又不会存在于任何一个命名空间之中。精确地说,正如你会创建(或替换)一个数据模型变量。因此,这个变量是全局的。如果在数据模型中,一个相同名称的变量存在的话,它会被使用这个指令创建的变量隐藏。如果在当前的命名空间中,一个相同名称的变量存在的话,那么会隐藏由global指令创建的变量。
local 指令
<#local name=value> or <#local name1=value1 name2=value2 ... nameN=valueN> or <#local name> capture this </#local>它和assign指令类似,但是它创建或替换局部变量。这仅仅在宏和方法的内部定义才会有作用。
setting 指令
<#setting name=value>
${1.2} <#setting locale="en_US"> ${1.2}输出
1,2 1.2用户自定义指令(<@...>)
<@html_escape> a < b Romeo & Juliet </@html_escape>macro,nested,return 指令
<#macro name param1 param2 ... paramN> ... <#nested loopvar1, loopvar2, ..., loopvarN> ... <#return> ... </#macro>
<#macro test> Test text <#return> Will not be printed. </#macro>function,return 指令
<#function name param1 param2 ... paramN> ... <#return returnValue> </#function>这里:
<#function avg x y> <#return (x + y) / 2> </#function> ${avg(10, 20)}
flush 指令
相关推荐
项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea 数据库:MySql5.7以上 部署环境:maven 数据库工具:navicat
YunSDR通信小课堂(第15讲).mhtml
【前端】是基于salvo和rbatis的rbac权限管理系统的前端项目
DeepSeek_V3技术报告译文版,翻译学习版,简单易懂;
分享一个ArcGIS 二调符号库(部标准)
【断点续传】FTP断点续传搭建_pgj
木块识别数据集,正确识别率95.7%,yolov5pytorch格式标注(可用于统计木块数量)
三相LCL型并网逆变器:电容电流反馈与电网电压全前馈的优化控制策略及低次谐波抑制技术,三相LCL型并网逆变器:电容电流反馈与全前馈电网电压控制策略的优化与谐波抑制研究,三相lcl型并网逆变器控制策略 电容电流反馈和电网电压全前馈,加入5.7.11.13次谐波thd<5。 相关方面电力电气工程,电子信息工程等等都可以。 ,三相lcl型并网逆变器控制策略; 谐波thd; 电网电压全前馈; 电容电流反馈; 电力电气工程; 电子信息工程,基于谐波优化的三相LCL型并网逆变器控制策略研究
基于SSA-RF算法优化的多变量时间序列预测:交叉验证抑制过拟合的Matlab代码实现,"基于SSA-RF优化的多变量时间序列预测及过拟合抑制:MATLAB代码实践",基于麻雀搜索算法优化随机森林(SSA-RF)的多变量时间序列预测 SSA-RF多变量时间序列 采用交叉验证抑制过拟合问题 matlab代码, 注:暂无Matlab版本要求 -- 推荐 2018B 版本及以上 注:采用 RF 工具箱(无需安装,可直接运行),仅支持 Windows 64位系统 ,SSA-RF; 麻雀搜索算法; 随机森林; 多变量时间序列预测; 交叉验证; 过拟合抑制; MATLAB代码; Windows 64位系统,"基于SSA-RF优化的多变量时间序列预测的Matlab交叉验证实现"
DeepSeek本地部署AI对话网页版
【毕业设计】基于VpnService的Android抓包与防火墙的实现_pgj
DeepSeek 使用技巧,强烈建议收藏.docx
逐项优化进阶:水果图像分割
使用Visual Studio搭建C++20开发环境
三相同步旋转锁相环PSIM仿真,以及相关技术文件代码
项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea 数据库:MySql5.7以上 部署环境:maven 数据库工具:navicat
之前全套打包的,也忘记有没有教程了,反正搭建挺简单的,先替换域名再搭建就好了,,不会的可以来问我,但是代搭建需要收辛苦费。 注意:这是系统源码,授权站+主站的。完整版的,之前拿来卖的,现在拼多多我也在卖,保证可用,因为之前都是给客户一条龙搭建好的,也忘记有没有教程了,多研究研究就好了。
内容概要:本文提出了一种针对带正交加强件(纵向筋条与环形肋)的层合材料圆柱壳振动声特性的半解析方法。该模型采用一阶剪切变形理论结合Lekhnitsky分散加强筋技术和光谱边界元法进行计算,并引入了主要结构与子段的概念以应对复杂壳体建模问题。文中利用傅里叶级数与勒让德多项式作为容许函数,在不同外部流体条件、夹层层法和加固件的数量及形状变化下进行了数值验证,并展示了模型对振动声性能预测的能力。 适合人群:机械工程领域的研究人员和技术人员,特别是从事复合材料及船舶海洋工程方向的人士。 使用场景及目标:用于精确模拟和评估带有不同加强结构的复合圆柱壳体在浸没情况下的振动响应与辐射噪声行为,辅助优化设计方案并提高产品性能。 其他说明:本研究成果为理解网格强化叠层结构提供了新的视角,并强调了此类材料组合应用于实际工程项目时所需关注的关键因素。此外还对比了一些文献数据来证明所提方法的有效性和准确性。
【毕业设计】关于新浪微博API的Java编程._pgj
第三方热狗如果个胜多负少