乐趣区

Freemark使用记录

对空值做处理

对输出的空值做处理,无返回值

  1. 输出 name 的值:

    1. ${name}。如果 name 为 null,就会报错。
    2. ${name!}。如果 name 为 null,就不会报错,什么也没输出
    3. ${name!” 默认值 ”}。如果 name 为 null,就输出”默认值”字符串
    4. ${name!100}。如果 name 为 null,就输出 100
  2. 输出 user.name 的值:

    1. ${(user.name)!” 默认值”}, 如果 user 或 name 为 null,就输出默认值
    2. ${user.name!” 默认值”}, 如果 user 为 null 会报错,如果 name 为 null,就输出默认值。
  3. 输出 user.birthday 的值:

    1. ${user.birthDate?string(“yyyy-MM-dd”)},如果 user 或 birthday 为空,就会报错。
    2. ${(user.birthDate?string(“yyyy-MM-dd”))!},如果 user 或 birthday 为 null,什么也没输出
  4. 使用 default 内建函数来处理:${user.name?default(‘vakin’)}(较繁琐)

测试是否为 null, 返回 boolean 值

  1. product.color?? 将只测试 color 是否为 null
  2. (product.color)?? 将测试 product 和 color 是否存在 null

值得注意的是?? 与?的区别

?? 是判断对象是否为空,例如:<#if object??> object 对象不为空(即 object 存在)</#if>

? 后面要加内建函数名,例如:<#if object?exists> object 对象不为空(即 object 存在)</#if>

逻辑语句

  1. 条件判断

    <#if condition>
      ...
    <#elseif condition2>
      ...
    <#elseif condition3>
      ...
    ...
    <#else>
      ...
    </#if>
    • condition, condition2,等:将被计算成布尔值的表达式。
    • elseifelse 是可选的。
  2. 循环

    <#list sequence as item>
        Part repeated for each item
    <#else>
        Part executed when there are 0 items
    </#list>
    • else 部分是可选的,意思是 sequence 的 size 为 0 的时候执行的语句,而且仅仅从 FreeMarker 2.3.23 版本开始支持。
    • sequence:将我们想要迭代的项,算作是序列或集合的表达式
    • item:循环变量 的名称 (不是表达式)
    • 在标签之间的多个 “parts” 可以是任意的 FTL (包括嵌套的 list)

注意事项

  1. ?? 与?的区别

    1. ?? 是判断对象是否为空,例如:<#if object??> object 对象不为空(即 object 存在)</#if>
    2. ? 后面要加内建函数名,例如:<#if object?exists> object 对象不为空(即 object 存在)</#if>
退出移动版