jfinal Enjoy模板语言

  • Post author:
  • Post category:其他


1.表达式

* 算术运算: +   -   *   /   %   ++   --

* 比较运算: >  >=   <   <=  ==   !=  (基本用法相同,后面会介绍增强部分)

* 逻辑运算: !   &&   ||

* 三元表达式: ? :

* Null 值常量: null

* 字符串常量: "jfinal club"

* 布尔常量:true false

* 数字常量: 123  456F  789L  0.1D  0.2E10

* 数组存取:array[i]        (Map被增强为额外支持 map[key]的方式取值)

* 属性取值:object.field    (Map被增强为额外支持map.key 的方式取值)

* 方法调用:object.method(p1, p2…, pn)     (支持可变参数)

* 逗号表达式:123, 1>2, null, "abc", 3+6   (逗号表达式的值为最后一个表达式的值)

* 模板安全调用: ? // #@name ? (p1, p2…, pn)  (指当模板函数未定义时不做任何操作)

2.方法调用 :#()

#("ABCDE".substring(0, 3))

#(girl.getAge())

#(list.size())

#(map.get(key))

3.空合并安全取值调用操作符,设置默认值

seoTitle ?? "默认值"

object.field ??

object.method() ??



特别注意:


?? 操作符的优先级      高于数学计算运算符:+、-、*、/、%,


低于单目运算符:!、++、–

例如:

a.b ?? && expr  ===  (a.b ??) && expr

#if(user && user.id == x.userId)  ==>   if (user.id ?? == x.userId)

4.定义表达式

// map 定义取值

#set(map = {k1:123, "k2":"abc", "k3":object})

#(map.k1)、#(map.k2)、#(map["k1"])、#(map["k2"])、#(map.get("k1"))

#({1:'自买', 2:'跟买'}.get(1))


// 数组定义取值

#set(array = [123, "abc", true])

#(array[1])、#(array[1] = false, array[1])


// 范围数组定义

#for(x : [1..10])

    #(x)

#end

5.逗号表达式 :  输出最后一位数值

1+2, 3*4   // 12

6.指令

1.输出指令: #()

2.#if  

    #if(c1)

        ...

    #else if(c2)

        ...

    #else 

        ...

    #end

3.#for

    #for(x : list)

        #(x.field)

    #else

        for指令迭代次数为0时默认输出

    #end

4.#switch

    #switch (month)

        #case (1, 3, 5, 7, 8, 10, 12)

            #(month) 月有 31 天

        #case (2)

            #(month) 月平年有28天,闰年有29天

        #default

            月份错误: #(month ?? "null")

        #end



5.#set:set指令只接受赋值表达式,以及用逗号分隔的赋值表达式列表

    #set(x = 123)

    #set(a = 1, b = 2, c = a + b)

    #set(map["key"] = 456)



6.#include:将外部模板内容包含进来,被包含的内容会被解析成为当前模板中的一部分进行使用

    #include("sidebar.html")

7.#render: #render(temp:任何表达式)

8.#define: #define name()

9.模板引用: #@name()

10.#call:   

   #call(funcName, p1, p2, ..., pn)

   #call(true, funcName, p1, p2, ..., pn)    // 模板函数不存在时忽略其调用

11.#date

    #date(account.createAt)

    #date(account.createAt, "yyyy-MM-dd HH:mm:ss")

12.#number

    #number(3.1415926, "#.##")

    #number(0.9518, "#.##%")

    #number(300000, "光速为每秒,### 公里。")

13.#escape : 转义, 小于号转义成:&lt;

    #escape(blog.content);

7.注释

### 这里是单行注释

#--

   这里是多行注释的第一行

   这里是多行注释的第二行

--#



版权声明:本文为zjl199303原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。