| 程序包 | 说明 |
|---|---|
| com.jfinal.kit | |
| com.jfinal.template | |
| com.jfinal.template.ext.directive | |
| com.jfinal.template.ext.spring |
| 限定符和类型 | 类和说明 |
|---|---|
static class |
ElKit.InnerEvalDirective |
| 限定符和类型 | 方法和说明 |
|---|---|
Directive |
DirectiveFactoryDefault.createDirective() |
Directive |
DirectiveFactory.createDirective() |
| 限定符和类型 | 方法和说明 |
|---|---|
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) |
| 构造器和说明 |
|---|
DirectiveFactoryDefault(Class<? extends Directive> directiveClass) |
| 限定符和类型 | 类和说明 |
|---|---|
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
根据 datePattern 参数输出当前时间,未指定 datePattern 参数时默认使用以下配置
env.getEngineConfig().getDatePattern()
注意该指令需要配置才能使用:
engine.addDirective("now", NowDirective.class, true);
例子:
1:#now()
2:#now("HH:mm:ss")
3:#now("yyyy-MM-dd HH:mm:ss")
|
class |
NumberDirective
#number 数字格式化输出指令
优化时要注意 DecimalFormat 并非线程安全
两种用法:
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 © 2024. All rights reserved.