云南响应式网站建设,无线网络优化,知识营销案例有哪些,一女被多男做的视频网站freemarker
Freemarker的基本语法及使用大全
freemarker的基本语法及入门基础
文本#xff1a;直接输出的内容部分注释#xff1a;不会输出的内容#xff0c;格式为#-- 注释内容 --取值(插值)#xff1a;代替输出数据模型的部分#xff0c;格式为${数据模型}或…freemarker
Freemarker的基本语法及使用大全
freemarker的基本语法及入门基础
文本直接输出的内容部分注释不会输出的内容格式为#-- 注释内容 --取值(插值)代替输出数据模型的部分格式为${数据模型}或#{数据模型}ftl指令Freemarker指令类似于HTML标记。 内建指令开始标签:#directivename parameter 结束标签:/#directivename 空标签:#directivename parameter/自定义指令开始标签:directivename parameter 结束标签:/directivename 空标签:directivename parameter/
字符串
字符串输出 ${param}
字符串输出-首字母大写 ${param?uncap_first}
list
循环遍历
可以使用Freemarker提供的#list指令来遍历对象集合。具体实现方式如下
#list objectList as item${item.property1}, ${item.property2}
/#list其中objectList表示你要遍历的对象集合名称item则是集合中的每一个对象你可以通过${item.property}来获取每个对象的属性值。循环体内的内容则是你需要对每个对象执行的操作。
例如对一个用户列表进行遍历代码实现如下
#list userList as userli${user.name}${user.age}岁/li
/#list这段代码可以将用户列表中每个用户的姓名和年龄输出到一个无序列表中。
处理最后一次循环遍历
在 FreeMarker 中可以使用 list 指令结合内置变量 index 和内置变量 size 来判断当前循环是否为最后一次循环。下面是一个示例程序演示如何在 FreeMarker 中使用 list 指令和 if 指令判断是否为最后一次循环
#list items as item#if item_index 1 items?sizeThe last item is: ${item}/#if
/#list在上述示例程序中item_index 表示当前循环的迭代次数。items?size 表示列表的元素个数。我们使用 item_index 1 判断当前循环是否为列表的最后一次循环如果是则输出 “The last item is: item”。
除了使用 if 指令来判断最后一次循环还可以使用 if 和 else 指令来分别处理最后一次和非最后一次的情况。下面是一个使用 if 和 else 指令的示例程序
#list items as item#if item_index 1 items?sizeThe last item is: ${item}#else${item},/#if
/#list在上述示例程序中如果当前循环不是最后一次输出当前元素和逗号否则输出最后一个元素不输出逗号。这样可以使输出的结果更加符合语言的语法规范。
总之在 FreeMarker 中使用 list 指令结合内置变量 index 和内置变量 size 来判断当前循环是否为最后一次循环是非常常见的操作。可以根据实际情况使用相应的语法。
判断包含x值
可以使用Freemarker的内建函数来判断一个List是否包含某个值。以下是一个示例
#assign myList [apple, banana, orange]
#if myList?seq_contains(banana)List contains banana
#elseList does not contain banana
/#if在上面的示例中我们首先声明了一个List myList包含了三个元素。然后使用内建函数?seq_contains来判断List是否包含了值banana。如果包含则输出List contains ‘banana’“否则输出List does not contain ‘banana’”。
if
在 FreeMarker 中可以使用 if 指令来实现条件判断。if 指令的语法格式如下所示
#if condition!-- 如果 condition 为 true 执行此部分代码 --
#elseif condition2!-- 如果 condition2 为 true 执行此部分代码 --
#else!-- 如果所有条件都不为 true 执行此部分代码 --
/#if在 FreeMarker 中可以使用一系列运算符来组合条件表达式例如、!、、、、、、|| 等等。下面是一个示例程序演示如何在 FreeMarker 中使用 if 指令实现条件判断。
#if amount 500h1You are a VIP customer!/h1
#elseif amount 100pYou are a premium customer./p
#elsepYou are a regular customer./p
/#if在上述示例程序中如果 amount 大于 500将会显示 “You are a VIP customer!”如果 amount 大于 100 小于等于 500将会显示 “You are a premium customer.”否则将会显示 “You are a regular customer.”。
除了简单的数值比较我们也可以使用变量、表达式和函数等来构建更加复杂的条件表达式。例如下面的示例程序演示了如何在 FreeMarker 中使用 if 指令结合函数和变量实现更加灵活的条件判断
#if user ? has_content user.getAge() 18h1Welcome, ${user.getName()}!/h1
#elsepSorry, you are not eligible to access this page./p
/#if在上述示例程序中判断是否有 user 变量并且该变量的年龄大于 18 岁如果条件成立则输出欢迎信息否则输出提示信息。
总之在 FreeMarker 中if 指令是非常常用且灵活的指令可以帮助我们方便地实现不同的条件判断。
if 字符串判断
在 FreeMarker 中字符串的相等判断可以使用 或 equals 方法进行比较。下面是一个示例程序演示如何在 FreeMarker 中使用 if 指令实现字符串的相等判断。
#if name JohnpHello John!/p
#elsepHello stranger!/p
/#if在上述示例程序中如果 name 的值等于 John将会显示 “Hello John!”否则将会显示 “Hello stranger!”。
除了 我们也可以使用 equals 方法进行字符串的相等比较。下面是一个示例程序演示如何使用 if 指令结合 equals 方法实现字符串的相等判断
#if name?has_content name.equals(John)pHello John!/p
#elsepHello stranger!/p
/#if在上述示例程序中name.equals(John) 表示 name 的值是否等于 John。如果成立则输出 “Hello John!”否则输出 “Hello stranger!”。
总之在 FreeMarker 中使用 if 指令进行字符串的相等比较非常常见可以帮助我们方便地根据不同的条件来展示内容或执行操作。 在 FreeMarker 中可以使用 操作符或 equals() 内置函数进行等值判断。但是在使用 equals() 函数时需要注意调用方法的对象是否存在或是否为 null否则会出现 null pointer exception 异常。 使用 操作符进行等值判断不会引起空指针异常因此可以避免上述异常信息的出现。 if 非空判断
在 FreeMarker 中可以使用 if 指令结合 FreeMarker 内置函数来进行非空判断。下面是一些常见的方法
使用 if 指令和 exists 内置函数进行非空判断
#if str?exists!-- 处理非空逻辑 --
/#if在上述代码中我们使用 str?exists 表达式来判断 str 变量是否存在且非空。只有当该条件为真时才会执行处理非空逻辑。
使用 if 指令和 has_content 内置函数进行非空判断
#if str?has_content!-- 处理非空逻辑 --
/#if在上述代码中我们使用 str?has_content 表达式来判断 str 变量是否存在且非空。如果该变量存在且其值不是空字符串、空列表、空 Map 或空序列则该表达式为真只有当该条件为真时才会执行处理非空逻辑。
总之以上提及的两种方法是 FreeMarker 中比较常用的非空判断方法。可以根据具体情况选择使用哪种方式。在使用时应根据实际情况进行优化避免不必要的空值判断。
空格标签
在 FreeMarker 中可以使用空格标签来忽略空格和换行符之间的产生的空格。这样可以让模板代码更加美观易读或者避免在输出 HTML 标签时产生不必要的空格和换行符从而影响到页面的显示效果。
下面是一些常用的空格标签
#t 空格标签
#t 空格标签是一个简单的标签它会将前一个标签的输出的文本和后一个标签的输出的文本之间产生的空格忽略掉。它的语法格式如下
前一个标签#t后一个标签例如可以使用 #t 标签来避免在输出 HTML 标签时产生不必要的空格和换行符。下面是一个示例代码演示如何在 FreeMarker 中使用 #t 空格标签
divspan#t/spanspanSome text/spanspan#t/span
/div在上述示例代码中我们使用了 #t 空格标签来忽略 span 标签之间产生的空格从而输出更加美观的 HTML 代码。
noparse 空格标签
noparse 空格标签是一个高级的标签它可以将标签之间的文本全部作为字符串处理从而避免 FreeMarker 渲染引擎对它进行处理。它的语法格式如下
noparse标签/noparse例如可以使用 noparse 标签来输出 Raw HTML防止 FreeMarker 引擎将 HTML 代码进行解析。下面是一个示例代码演示如何在 FreeMarker 中使用 noparse 空格标签
noparseinput typetext placeholderType something/noparse在上述示例代码中我们使用了 noparse 空格标签来输出 Raw HTML保证输入框的 HTML 代码不会被 FreeMarker 渲染引擎进行解析。
总之以上提及的两种空格标签在 FreeMarker 中都有广泛的应用。它们可以帮助模板代码更加美观易读或避免在输出 HTML 标签时产生不必要的空格和换行符从而影响到页面的显示效果。
demo
public class FreeMarkerConsoleEx {public static void main(String[] args) throws IOException,TemplateException {Configuration cfg new Configuration(new Version(2.3.23));cfg.setClassForTemplateLoading(FreeMarkerConsoleEx.class, /);cfg.setDefaultEncoding(UTF-8);Template template cfg.getTemplate(test.ftl);MapString, Object templateData new HashMap();templateData.put(msg, Today is a beautiful day);try (StringWriter out new StringWriter()) {template.process(templateData, out);System.out.println(out.getBuffer().toString());out.flush();}}
}