public class Engine extends Object
| 限定符和类型 | 字段和说明 |
|---|---|
static String |
MAIN_ENGINE_NAME |
| 构造器和说明 |
|---|
Engine()
Create engine without management of JFinal
|
Engine(String engineName)
Create engine by engineName without management of JFinal
|
| 限定符和类型 | 方法和说明 |
|---|---|
Engine |
addDirective(String directiveName,
Class<? extends Directive> directiveClass)
添加自定义指令,keepLineBlank 使用默认值
|
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)
|
Engine |
addEnum(Class<? extends Enum<?>> enumClass) |
static void |
addExtensionMethod(Class<?> targetClass,
Class<?> extensionClass) |
static void |
addExtensionMethod(Class<?> targetClass,
Object objectOfExtensionClass) |
static void |
addFieldGetter(int index,
FieldGetter fieldGetter)
添加 FieldGetter 实现类到指定的位置
系统当前默认 FieldGetter 实现类及其位置如下:
GetterMethodFieldGetter ---> 调用 getter 方法取值
RealFieldGetter ---> 直接获取 public 型的 object.field 值
ModelFieldGetter ---> 调用 Model.get(String) 方法取值
RecordFieldGetter ---> 调用 Record.get(String) 方法取值
MapFieldGetter ---> 调用 Map.get(String) 方法取值
ArrayLengthGetter ---> 获取数组长度
根据以上次序,如果要插入 IsMethodFieldGetter 到 GetterMethodFieldGetter
之后的代码如下:
Engine.addFieldGetter(1, new IsMethodFieldGetter());
注:IsMethodFieldGetter 系统已经提供,只是默认没有启用。
|
static void |
addFieldGetterToFirst(FieldGetter fieldGetter) |
static void |
addFieldGetterToLast(FieldGetter fieldGetter) |
Engine |
addSharedFunction(ISource source)
Add shared function by ISource
|
Engine |
addSharedFunction(String... fileNames)
Add shared function by files
|
Engine |
addSharedFunction(String fileName)
Add shared function by file
|
Engine |
addSharedFunctionByString(String content)
Add shared function by string content
|
Engine |
addSharedMethod(Class<?> sharedMethodFromClass)
Add shared method from class
|
Engine |
addSharedMethod(Object sharedMethodFromObject)
Add shared method from object
|
Engine |
addSharedObject(String name,
Object object)
Add shared object
|
Engine |
addSharedStaticMethod(Class<?> sharedStaticMethodFromClass)
Add shared static method of Class
|
static Engine |
create(String engineName)
Create engine with engine name managed by JFinal
|
String |
getBaseTemplatePath() |
String |
getDatePattern() |
boolean |
getDevMode() |
String |
getEncoding() |
EngineConfig |
getEngineConfig() |
String |
getName() |
ISourceFactory |
getSourceFactory() |
Template |
getTemplate(ISource source)
Get template by implementation of ISource
|
Template |
getTemplate(String fileName)
Get template by file name
|
Template |
getTemplateByString(String content)
Get template by string content and do not cache the template
|
Template |
getTemplateByString(String content,
boolean cache)
Get template by string content
重要:StringSource 中的 cacheKey = HashKit.md5(content),也即 cacheKey
与 content 有紧密的对应关系,当 content 发生变化时 cacheKey 值也相应变化
因此,原先 cacheKey 所对应的 Template 缓存对象已无法被获取,当 getTemplateByString(String)
的 String 参数的数量不确定时会引发内存泄漏
当 getTemplateByString(String, boolean) 中的 String 参数的
数量可控并且确定时,才可对其使用缓存
|
int |
getTemplateCacheSize() |
static Engine |
remove(String engineName)
Remove engine with engine name managed by JFinal
|
void |
removeAllTemplateCache()
Remove all template cache
|
Engine |
removeDirective(String directiveName)
Remove directive
|
static void |
removeExtensionMethod(Class<?> targetClass,
Class<?> extensionClass) |
static void |
removeExtensionMethod(Class<?> targetClass,
Object objectOfExtensionClass) |
static void |
removeFieldGetter(Class<? extends FieldGetter> fieldGetterClass) |
Engine |
removeSharedMethod(Class<?> clazz)
Remove shared Method of the Class
|
Engine |
removeSharedMethod(Method method)
Remove shared Method
|
Engine |
removeSharedMethod(String methodName)
Remove shared Method by method name
|
Engine |
removeSharedObject(String name) |
void |
removeTemplateCache(String cacheKey)
Remove template cache by cache key
|
Engine |
setBaseTemplatePath(String baseTemplatePath) |
Engine |
setCacheStringTemplate(boolean cacheStringTemplate)
方法获取的模板,默认配置为 false
|
Engine |
setCompressor(Compressor compressor)
配置 Compressor 可对模板中的静态内容进行压缩
可通过该方法配置自定义的 Compressor 来代替系统默认实现,例如:
engine.setCompressor(new MyCompressor());
|
Engine |
setCompressorOn()
设置开启压缩功能。
|
Engine |
setCompressorOn(char separator)
两种配置的压缩率是完全一样的
|
Engine |
setDatePattern(String datePattern) |
Engine |
setDevMode(boolean devMode)
设置 true 为开发模式,支持模板文件热加载
设置 false 为生产模式,不支持模板文件热加载,以达到更高的性能
|
Engine |
setEncoderFactory(EncoderFactory encoderFactory)
Enjoy 模板引擎对 UTF-8 的 encoding 做过性能优化,某些罕见字符
无法被编码,可以配置为 JdkEncoderFactory 解决问题:
engine.setEncoderFactory(new JdkEncoderFactory());
|
Engine |
setEncoding(String encoding) |
static void |
setFastFieldKeyBuilder(boolean enable) |
static void |
setFastMode(boolean fastMode)
设置极速模式
极速模式将生成代理对象来消除 java.lang.reflect.Method.invoke(...)
|
static void |
setMainEngine(Engine engine)
Set main engine
|
Engine |
setOutputDirectiveFactory(OutputDirectiveFactory outputDirectiveFactory)
Set output directive factory
|
Engine |
setReloadModifiedSharedFunctionInDevMode(boolean reloadModifiedSharedFunctionInDevMode)
Engine 独立设置为 devMode 可以方便模板文件在修改后立即生效,
但如果在 devMode 之下并不希望对 addSharedFunction(...),
添加的模板进行是否被修改的检测可以通过此方法设置 false 参进去
注意:Engine 在生产环境下(devMode 为 false),该参数无效
|
Engine |
setSourceFactory(ISourceFactory sourceFactory)
设置 ISourceFactory 用于为 engine 切换不同的 ISource 实现类
ISource 用于从不同的来源加载模板内容
配置为 ClassPathSourceFactory 时特别注意:
由于 JFinal 会在 configEngine(Engine me) 方法调用 “之前”,会默认调用一次如下方法:
me.setBaseTemplatePath(PathKit.getWebRootPath())
而 ClassPathSourceFactory 在以上默认值下不能工作,所以需要通过如下方式清掉该值:
me.setBaseTemplatePath(null)
或者配置具体要用的 baseTemplatePath 值,例如:
me.setBaseTemplatePath("view");
|
Engine |
setToClassPathSourceFactory()
设置为 ClassPathSourceFactory 的快捷方法
|
Engine |
setToJdkEncoderFactory()
配置为 JdkEncoderFactory,支持 utf8mb4,支持 emoji 表情字符,
支持各种罕见字符编码
|
Engine |
setWriterBufferSize(int bufferSize) |
String |
toString() |
static Engine |
use()
Using the main Engine
|
static Engine |
use(String engineName)
Using the engine with engine name
|
public Engine()
public Engine(String engineName)
public static Engine use()
public static Engine create(String engineName)
public static Engine remove(String engineName)
public static void setMainEngine(Engine engine)
public Template getTemplateByString(String content)
public Template getTemplateByString(String content, boolean cache)
content - 模板内容cache - true 则缓存 Template,否则不缓存public Engine addSharedFunctionByString(String content)
public Engine setOutputDirectiveFactory(OutputDirectiveFactory outputDirectiveFactory)
public Engine addDirective(String directiveName, Class<? extends Directive> directiveClass, boolean keepLineBlank)
示例:
addDirective("now", NowDirective.class, true)
public Engine addDirective(String directiveName, Class<? extends Directive> directiveClass)
public Engine addSharedMethod(Object sharedMethodFromObject)
public Engine addSharedMethod(Class<?> sharedMethodFromClass)
public Engine addSharedStaticMethod(Class<?> sharedStaticMethodFromClass)
public Engine removeSharedMethod(String methodName)
public Engine removeSharedMethod(Class<?> clazz)
public void removeTemplateCache(String cacheKey)
public void removeAllTemplateCache()
public int getTemplateCacheSize()
public String getName()
public EngineConfig getEngineConfig()
public Engine setDevMode(boolean devMode)
public boolean getDevMode()
public Engine setCacheStringTemplate(boolean cacheStringTemplate)
public Engine setSourceFactory(ISourceFactory sourceFactory)
配置为 ClassPathSourceFactory 时特别注意:
由于 JFinal 会在 configEngine(Engine me) 方法调用 “之前”,会默认调用一次如下方法:
me.setBaseTemplatePath(PathKit.getWebRootPath())
而 ClassPathSourceFactory 在以上默认值下不能工作,所以需要通过如下方式清掉该值:
me.setBaseTemplatePath(null)
或者配置具体要用的 baseTemplatePath 值,例如:
me.setBaseTemplatePath("view");
public Engine setToClassPathSourceFactory()
public ISourceFactory getSourceFactory()
public String getBaseTemplatePath()
public String getDatePattern()
public String getEncoding()
public Engine setEncoderFactory(EncoderFactory encoderFactory)
public Engine setToJdkEncoderFactory()
public Engine setWriterBufferSize(int bufferSize)
public Engine setCompressorOn(char separator)
public Engine setCompressorOn()
public Engine setCompressor(Compressor compressor)
public Engine setReloadModifiedSharedFunctionInDevMode(boolean reloadModifiedSharedFunctionInDevMode)
public static void addExtensionMethod(Class<?> targetClass, Object objectOfExtensionClass)
public static void addExtensionMethod(Class<?> targetClass, Class<?> extensionClass)
public static void removeExtensionMethod(Class<?> targetClass, Object objectOfExtensionClass)
public static void removeExtensionMethod(Class<?> targetClass, Class<?> extensionClass)
public static void addFieldGetter(int index,
FieldGetter fieldGetter)
public static void addFieldGetterToLast(FieldGetter fieldGetter)
public static void addFieldGetterToFirst(FieldGetter fieldGetter)
public static void removeFieldGetter(Class<? extends FieldGetter> fieldGetterClass)
public static void setFastFieldKeyBuilder(boolean enable)
public static void setFastMode(boolean fastMode)
Copyright © 2022. All rights reserved.