| 程序包 | 说明 |
|---|---|
| org.tio.jfinal.kit | |
| org.tio.jfinal.plugin.activerecord.sql | |
| org.tio.jfinal.template | |
| org.tio.jfinal.template.ext.directive | |
| org.tio.jfinal.template.ext.spring |
| 限定符和类型 | 类和说明 |
|---|---|
static class |
ElKit.InnerEvalDirective |
| 限定符和类型 | 类和说明 |
|---|---|
class |
NameSpaceDirective
NameSpaceDirective
|
class |
ParaDirective
#para 指令用于在 sql 模板中根据参数名生成问号占位以及查询参数
一、参数为表达式的用法
1:模板内容
#sql("find")
select * from user where nickName = #para(nickName) and age > #para(age)
#end
2: java 代码
SqlPara sp = getSqlPara("find", Kv.by("nickName", "prettyGirl").set("age", 18));
user.find(sp)
或者:
user.find(sp.getSql(), sp.getPara());
3:以上用法会在 #para(expr) 处生成问号占位字符,并且实际的参数放入 SqlPara 对象的参数列表中
后续可以通过 sqlPara.getPara() 获取到参数并直接用于查询
二、参数为 int 型数字的用法
1:模板内容
#sql("find")
select * from user where id > #para(0) and id < #para(1)
#end
2: java 代码
SqlPara sp = getSqlPara("find", 10, 100);
user.find(sp)
3:以上用法会在 #para(0) 与 #para(1) 处生成问号占位字符,并且将 10、100 这两个参数放入
SqlPara 对象的参数列表中,后续可以通过 sqlPara.getPara() 获取到参数并直接用于查询
|
class |
SqlDirective
SqlDirective
|
| 限定符和类型 | 方法和说明 |
|---|---|
Class<? extends Directive> |
EngineConfig.getDirective(String directiveName) |
| 限定符和类型 | 方法和说明 |
|---|---|
Engine |
Engine.addDirective(String directiveName,
Class<? extends Directive> directiveClass)
添加自定义指令,keepLineBlank 使用默认值
|
void |
EngineConfig.addDirective(String directiveName,
Class<? extends Directive> directiveClass) |
Engine |
Engine.addDirective(String directiveName,
Class<? extends Directive> directiveClass,
boolean keepLineBlank)
添加自定义指令
建议添加自定义指令时明确指定 keepLineBlank 变量值,其规则如下:
1:keepLineBlank 为 true 时, 该指令所在行的前后空白字符以及末尾字符 '\n' 将会被保留
一般用于具有输出值的指令,例如 #date、#para 等指令
2:keepLineBlank 为 false 时,该指令所在行的前后空白字符以及末尾字符 '\n' 将会被删除
一般用于没有输出值的指令,例如 #for、#if、#else、#end 这种性质的指令
示例:
addDirective("now", NowDirective.class, true)
|
void |
EngineConfig.addDirective(String directiveName,
Class<? extends Directive> directiveClass,
boolean keepLineBlank) |
| 限定符和类型 | 类和说明 |
|---|---|
class |
CallDirective
CallDirective 动态调用模板函数
模板函数的名称与参数都可以动态指定,提升模板函数调用的灵活性
例如:
#call(funcName, p1, p2, ..., pn)
其中 funcName,为函数名,p1、p2、pn 为被调用函数所使用的参数
如果希望模板函数不存在时忽略其调用,添加常量值 true 在第一个参数位置即可
例如:
#call(true, funcName, p1, p2, ..., pn)
TODO 后续优化看一下 ast.Call.java
|
class |
DateDirective
#date 日期格式化输出指令
三种用法:
1:#date(createAt) 用默认 datePattern 配置,输出 createAt 变量中的日期值
2:#date(createAt, "yyyy-MM-dd HH:mm:ss") 用第二个参数指定的 datePattern,输出 createAt 变量中的日期值
3:#date() 用默认 datePattern 配置,输出 “当前” 日期值
注意:
1:#date 指令中的参数可以是变量,例如:#date(d, p) 中的 d 与 p 可以全都是变量
2:默认 datePattern 可通过 Engine.setDatePattern(...)
|
class |
EscapeDirective
Escape 对字符串进行转义
用法:
#escape(value)
|
class |
NowDirective
输出当前时间,默认考虑是输出时间,给 pattern 输出可能是 Date、DateTime、Timestamp
带 String 参数,表示 pattern
|
class |
NumberDirective
#number 数字格式化输出指令
两种用法:
1:#number(n) 用默认 pattern 输出变量中的值
2:#number(n, "#.##") 用第二个参数指定的 pattern 输出变量中的值
注意:
1:pattern 的使用与 java.text.DecimalFormat 的完全一样
在拿不定主意的时候可以在搜索引擎中搜索关键字:DecimalFormat
2:#number 指令中的参数可以是变量,例如:#number(n, p) 中的 n 与 p 可以全都是变量
示例:
#number(3.1415926, "#.##")
#number(0.9518, "#.##%")
#number(300000, "光速为每秒 ,### 公里。")
|
class |
RandomDirective
输出 int 型随机数
|
class |
RenderDirective
#render 指令用于动态渲染子模板,作为 include 指令的补充
两种用法:
1:只传入一个参数,参数可以是 String 常量,也可以是任意表达式
#render("_hot.html")
#render(subFile)
2:传入任意多个参数,除第一个参数以外的所有参数必须是赋值表达式,用于实现参数传递功能
#render("_hot.html", title = "热门新闻", list = newsList)
上例中传递了 title、list 两个参数,可以代替父模板中的 #set 指令传参方式
并且此方式传入的参数只在子模板作用域有效,不会污染父模板作用域
这种传参方式有利于将子模板模块化,例如上例的调用改成如下的参数:
#render("_hot.html", title = "热门项目", list = projectList)
通过这种传参方式在子模板 _hot.html 之中,完全不需要修改对于 title 与 list
这两个变量的处理代码,就实现了对 “热门项目” 数据的渲染
|
class |
StringDirective
#string 指令方便定义大量的多行文本变量,这个是 java 语言中极为需要的功能
定义:
#string(name)
在此是大量的字符串
#end
使用:
#(name)
|
| 限定符和类型 | 方法和说明 |
|---|---|
void |
JFinalViewResolver.addDirective(String directiveName,
Directive directive)
已过时。
|
| 限定符和类型 | 方法和说明 |
|---|---|
void |
JFinalViewResolver.addDirective(String directiveName,
Class<? extends Directive> directiveClass)
添加自定义指令
|
Copyright © 2022. All rights reserved.