Freemarker - 基础篇(上)

简介: Freemarker - 基础篇(上)

image.pngimage.pngimage.png

1、布尔值类型

boolen类型不能用true,false会报异常,两种解决方式:

(1)在配置文件中修改:image.png(2)在前端页面中修改:image.png

2、日期时间类型

freemarker不支持java.util.Date类型,支持java.sql.Date类型。 解决方式:

(1)可以在前台页面对java.util.Date类型进行转换: 日期:${dateVar?String('yyyy-MM-dd HH:mm:ss')}

(2)若是在配置文件中格式化,则如图。image.png

3、NULL类型或不存在的变量

freemarker不能取空值,但可以控制 null: ${nullVar!'我是默认值(可选)'}image.png

4、变量的赋值和运算

<#assign a=100>,${a+100} 变量赋值与运算。

5、自定义对象变量的取值

(1)${(userObj.name)!}给userObj.name加括号后再加!(判空符号)表示对整体进行判空,即现对userObj判空,存在后在对name进行判空。

${userObj.name!}如果单单这样去掉括号,只是就近原则,只对name作空判断处理,而不会对userObj判空处理。

(2)${var?html} 对var变量里的html标签进行转义,并输出富文本

6、List取值

<#list mylist(注:集合名称) as item> ${item!}

如果集合中装的是对象,就使用 item.properties 对象 点 属性

7、Map取值

<#list map_name?keys as key> ${key}(对key取值):${map_name[key](对value取值)} <#list>

8、If/elseif/else

<#if var > 99>        //条件 大于99
  var 大于 99         //打印显示数据,结果
<#elseif var== 99>   //注意中间没有间隔
   var == 99         //elseif就等于99,结果
 <#else>
  var 小于99         //else 结果小于99
<#if>                //有开始就有结束

(1)??或者?exists表示判断变量是否存在,用法为<#if var?exists>

(2)if多条件判断 使用逻辑与“&&”、或“||”、非“!”。

(3)变量?length 判断字符串的长度

9、Switch/case/break/default(支持 string、int

<#assign var=10/>
<#switch var>
 <#case 10>  输出10  <#break>
.....
  <#default>   输出out
</#switch>

Ps:必须要加break,否则哪怕case的值对不上,也会默认相等继续输出。

10、字符串,集合操作image.png

<h1>
    字符串操作:
</h1>
<ul>
    <#assign string1='hello,'/>
    <#assign string2='world'/>
    <li>连接:${string1+string2}</li>
    <li>截取:${(string1+string2)?substring(5,8)} &nbsp; --> 同java</li>
    <li>分隔:${(string1+string2)?split(',')[0]} &nbsp; --> 同java</li>
    <li>长度:${(string1+string2)?length }--> 同java</li>
    <li>大写:${(string1+string2)?upper_case}</li>
    <li>小写:${(string1+string2)?lower_case}</li>
    <!--首次出现位置-->
    <li>indexOf:${(string1+string2)?index_of('o')}</li>
    <!--最后出现位置-->
    <li>lastIndexOf:${(string1+string2)?last_index_of('o')}</li>
    <li>替换:${(string1+string2)?replace('w','xxx')}</li>
</ul>

11、自定义函数

image.png

使用自定义函数:

(1)代码中定义:mv.addObject("sort_int",new SortMethod());

(2)模板中使用:

<#assign  mylist=[1,2,3,4,5,6] />
<#list  sort_int(mylist)  as  item>
    ${item}
</#list>

(3)SortMethod扩展了Freemarker的TemplateMethodModelEx,重写exec方法。

SimpleSequence 代表是freemaker中一个数组,列表。

传入参数 arguments 是List集合,在传参的时候可以在前端代码中加入多个参数。

注意:传入参数类型需是 freemark 参数类型,然后再转为 Java 类型,否则直接转Java类型会报错。

<h1>
    自定义函数:
</h1>
<ul>
    <#assign strings=[2,3,4,5,6,9,8,3,2,7]/>
    <li>未排序:</li>
    <#list strings as str>
        ${str}
    </#list>
    <li>已排序:--> 自定义排序在后台写 </li>
    <!--list sort_int(strings) as str>-->
    <li>已排序:--> 调用已存在的排序方法 -->升序</li>
    <#list strings?sort as str>
        <li>${str}</li>
        <li>输出list下标:${str_index}</li>
    </#list>
    <li>已排序:--> 调用已存在的排序方法 -->降序</li>
    <#list strings?sort?reverse as str>
        <li>${str}</li>
        <li>输出list下标:${str_index}</li>
    </#list>
    <li>list长度:${strings?size}</li>
    <li>下标取值:${strings[0]}</li>
</ul>

Ps:

<#list myList?sort?reverse as item>  // 调用排序,反序

${ietm_index} : ${item}  // 下标 :值

${list?size} // 大小

${list?[index]} // index对应的下标值

Freemark 语法:

自带函数语法:“?函数”

自带属性语法:“_属性”

目录
相关文章
|
前端开发 开发工具 iOS开发
初识MVVM·关于启动页、引导页、登录页的设计细节和交互逻辑(1)
初识MVVM·关于启动页、引导页、登录页的设计细节和交互逻辑
592 0
|
Java Maven
springboot项目--freemarker使用ftl模板文件动态生成图片
springboot项目--freemarker使用ftl模板文件动态生成图片
1563 0
|
10月前
|
人工智能 监控 测试技术
阿里云磐久服务器稳定性实践之路
阿里云服务器质量智能管理体系聚焦自研服务器硬件层面的极致优化,应对高并发交付、短稳定性周期、早问题发现和快修复四大挑战。通过“三个重构”(质量标准、开发流程、交付模式)、“六个归一”(架构、硬件、软件、测试、部件、制造)策略,实现芯片、整机和云同步发布,确保快速稳定上量。此外,全场景测试体系与智能预警、分析、修复系统协同工作,保障服务器在萌芽阶段发现问题并及时解决,提升整体质量水平。未来,阿里云将继续深化大数据驱动的质量管理,推动服务器行业硬件质量的持续进步。
|
Java API Maven
如何在Java中实现邮件发送功能?
如何在Java中实现邮件发送功能?
|
算法 Java C++
Java中的标号(Labels)与标签语句(Labeled Statements)深入解析
Java中的标号(Labels)与标签语句(Labeled Statements)深入解析
707 0
|
移动开发 HTML5
超级高大上HTML5引导页源码 动态效果更好看
超级高大上HTML5引导页源码 动态效果更好看
487 3
超级高大上HTML5引导页源码 动态效果更好看
|
SQL 分布式计算 大数据
MaxCompute产品使用问题之如何修改字段类型
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
245 2
|
前端开发 Java
干货文:SpringBoot 配置 AOP 打印请求参数和返回参数
干货文:SpringBoot 配置 AOP 打印请求参数和返回参数
1241 1
|
Dubbo 应用服务中间件
【Default config not found for ApplicationConfig】的一种解决方案
【Default config not found for ApplicationConfig】的一种解决方案
1064 0
|
机器学习/深度学习 开发者 iOS开发
快速上手·10分钟完成一个引导页界面
快速上手·10分钟完成一个引导页界面
579 0