freemarker 笔记< 一>

来源:互联网 发布:彩虹代刷3.9破解版源码 编辑:程序博客网 时间:2024/05/21 00:47

最近的项目用到了freemarker,正好借此机会,好好学习下freemarker,做个笔记,以示之。

最基本的概念就不赘述了,今天主要看freemarker中如何处理不存在的变量

在实际应用中数据模型经常会有可选的变量(也就是说有时可能不存在实际值) 。除了一些典型的人为原因导致失误,FreeMarker 不能容忍引用不存在的变量,除非明确地告诉它当变量不存在时如何处理。这里介绍两种典型的处理方法。

   对程序员而言会有:一个不存在的变量和一个是 null 的变量,但对于 FreeMarker 来说是一样的,所以这里所指的丢失包含这两种情况。
  不论在哪里引用变量,都可以指定一个默认值来避免变量丢失这种情况,通过在变量名后面跟着一个!和默认值。就像下面的例子,当 user 从数据模型中丢失时,模板将会将user 的值表示为字符串”DefaultUser”。(若 user 并没有丢失,那么模板就会表现出”DefaultUser”不存在一样):
<h1>Welcome ${user!"DefaultUser"}</h1>

当然也可以在变量名后面通过放置??来询问 FreeMarker 一个变量是否存在。将它和 if指令合并,那么如果 user 变量不存在的话将会忽略整个问候代码段:
<#if user??><h1>Welcome ${user}!</h1></#if>
  关于多级访问的变量,比如 animals.python.price ,书写代码:animals.python.price!0,仅当 animals.python 存在而仅仅最后一个子变量 price 可能不存在(这种情况下我们假设价格是 0) 。如果 animals 或者 python不存在,那么模板处理过程将会以“未定义的变量”错误而停止。 为了防止这种情况的发生,可以这样来书写代码(animals.python.price)!0。这种情况下当 animals 或python 不存在时表达式的结果仍然是 0。对于??也是同样用来的处理这种逻辑的:animals.python.price??对比(animals.python.price)??来看。



原创粉丝点击