freemaker学习记录

为什么突然要学这个呢。因为看到知乎上一个笑话(作者justjavac):

朋友介绍的。有一年 Java 经验,来了先试用吧。当时有一个海事局的项目需要做个页面,显示监测数据。虽然东南沿海 24 个基站每秒有几个 G 的数据,但是数据我已经处理好了,只需要页面显示。
于是交给他了。
“来,你用 JSP 做个简单页面,包括登陆和数据显示。”
“JSP 我不会。之前直接学的 SSH。”
当时我心里就打鼓了,“那就用 SSH 做吧”。

果然,一直到下班,连个登录都没做出来。
“这个有那么难吗?你之前的项目都是怎么做的啊?”
“我之前做的都是大项目,没做过这么小的。”

事实上,虽然一直在用java做服务端开发,但是由于分工,最前也只做到提供External接口为止,前端则是分离独立开发部署的。

如果做一个小东西也来这套前后端分离就太折腾了,于是打算补一下jsp,然后所幸偷懒到底用springboot了。 =_=|| 


内容来自:http://freemarker.foofun.cn/dgui_quickstart_basics.html

数据模型

 数据模型与Java的POJO对象对应。可以当为空时给出默认值,使用方法如:${user!"visitor"},${latestProduct.url},

(root)
  |
  +- user = "Big Joe"
  |
  +- latestProduct
      |
      +- url = "products/greenmouse.html"
      |
      +- name = "green mouse"

还可以使用map和list这样的数据结构 如animals[0].name, misc.fruits[0]

(root)
  |
  +- animals
  |   |
  |   +- (1st)
  |   |   |
  |   |   +- name = "mouse"
  |   |   |
  |   |   +- size = "small"
  |   |   |
  |   |   +- price = 50
  |   |
  |   +- (2nd)
  |   |   |
  |   |   +- name = "elephant"
  |   |   |
  |   |   +- size = "large"
  |   |   |
  |   |   +- price = 5000
  |   |
  |   +- (3rd)
  |       |
  |       +- name = "python"
  |       |
  |       +- size = "medium"
  |       |
  |       +- price = 4999
  |
  +- misc
      |
      +- fruits
          |
          +- (1st) = "orange"
          |
          +- (2nd) = "banana"

指令

if指令

<h1>
  如果不为空..
  <#if user??><h1>Welcome ${user}!</h1></#if>
<#if animals.python.price == animals.elephant.price> Pythons are cheaper than elephants today. <#else> Pythons are not cheaper than elephants today. </#if> </h1>

list指令,数据结构见上文。

<table border=1>
  <#list animals as animal>
    <tr><td>${animal.name}<td>${animal.price} Euros
  </#list>
</table>

上面的写法,当list为空时,会输出一个空的table,为了避免,可以如下写法:

<#list animals>
  <ul>
    <#items as animal>
      <li>${animal}
    </#items>
  </ul>
</#list>
<p>Fruits: <#list misc.fruits as fruit>${fruit}<#sep>, <#else>None</#list>

使用分隔符,可以使用<#sep>,处理空list时可以使用<#else>处理,联合使用如下:

<#list misc.fruits>
  <p>Fruits:
  <ul>
    <#items as fruit>
      <li>${fruit}<#sep> and</#sep>
    </#items>
  </ul>
<#else>
  <p>We have no fruits.
</#list>

include 指令

如<#include "/copyright_footer.html">

内建函数

user?html 给出 user 的HTML转义版本, 比如 & 会由 &amp; 来代替。

fruits?join(", ") 通过连接所有项,将列表转换为字符串, 在每个项之间插入参数分隔符(比如 "orange,banana")

原文地址:https://www.cnblogs.com/kuracola/p/7483591.html