LMLPHP后院

FreeMarker 处理不存在的值技术

maybe yes 发表于 2017-11-23 17:35

FreeMarker 是 Java 的模板引擎,相比起比较偏执的 Thymeleaf 更加人性化一些,本文讲解使用 FreeMarker 处理不存在的值的一些事项。

默认值操作符

使用形式:unsafe_expr!default_expr 或 unsafe_expr! 或 (unsafe_expr)!default_expr 或 (unsafe_expr)!。如果默认值被省略了,那么结果将会是空串,空序列或空哈希表。 (这是 FreeMarker 允许多类型值的体现)请注意,如果想让默认值为 0 或 false,则不能省略它。

不存在值检测操作符

使用形式: unsafe_expr?? 或 (unsafe_expr)??。这个操作符告诉我们一个值是否存在。基于这种情况, 结果是 true 或 false。示例如下,假设并没有名为 mouse 的变量:

<#if mouse??>
  Mouse found
<#else>
  No mouse found
</#if>
Creating mouse...
<#assign mouse = "Jerry">
<#if mouse??>
  Mouse found
<#else>
  No mouse found
</#if>

将会输出:

  No mouse found
Creating mouse...
  Mouse found

访问非顶层变量的使用规则和默认值操作符也是一样的, 也就是说,可以写 product.color?? 和 (product.color)??。

转义 HTML

如下示例:

<input type="text" value="${remark?html}" name="remark" placeholder="">
2018-06-25 04:06:16 1529870776 0.004362