Freemark使用记录

如下指示我对Freemark最经常使用的标签与问题的总结,详情请参考官方文档html

对空值作处理

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

  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的值:ui

    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>code

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

逻辑语句

  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>
相关文章
相关标签/搜索