TemplateUtil的实现类增加getRawEngine方法

This commit is contained in:
Looly 2022-09-15 00:34:06 +08:00
parent bce8d93ba7
commit f9f0a5ed1a
9 changed files with 150 additions and 61 deletions

View File

@ -10,6 +10,7 @@
* 【jwt 】 优化JWT自动识别header中的算法并可自定义header中key的顺序issue#I5QRUO@Gitee
* 【core 】 IdcardUtil增加convert18To15方法issue#I5QYCP@Gitee
* 【core 】 新增AnsiColors(改自Spring Boot)、AnsiColorWrapper优化QrCodeUtilpr#778@Gitee
* 【core 】 TemplateUtil的实现类增加getRawEngine方法issues#2530@Github
### 🐞Bug修复
* 【core 】 修复ObjectUtil.defaultIfXXX中NPE问题pr#2603@Github

View File

@ -72,6 +72,16 @@ public class BeetlEngine implements TemplateEngine {
return BeetlTemplate.wrap(engine.getTemplate(resource));
}
/**
* 获取原始引擎的钩子方法用于自定义特殊属性如插件等
*
* @return {@link GroupTemplate}
* @since 5.8.7
*/
public GroupTemplate getRawEngine() {
return this.engine;
}
/**
* 创建引擎
*

View File

@ -77,6 +77,16 @@ public class EnjoyEngine implements TemplateEngine {
return EnjoyTemplate.wrap(this.engine.getTemplate(resource));
}
/**
* 获取原始引擎的钩子方法用于自定义特殊属性如插件等
*
* @return {@link com.jfinal.template.Engine}
* @since 5.8.7
*/
public com.jfinal.template.Engine getRawEngine() {
return this.engine;
}
/**
* 创建引擎
*

View File

@ -15,7 +15,7 @@ import java.io.IOException;
/**
* FreeMarker模板引擎封装<br>
* https://freemarker.apache.org/
* <a href="https://freemarker.apache.org/">https://freemarker.apache.org/</a>
*
* @author looly
*/
@ -82,6 +82,16 @@ public class FreemarkerEngine implements TemplateEngine {
}
}
/**
* 获取原始引擎的钩子方法用于自定义特殊属性如插件等
*
* @return {@link Configuration}
* @since 5.8.7
*/
public Configuration getConfiguration() {
return this.cfg;
}
/**
* 创建配置项
*

View File

@ -66,6 +66,16 @@ public class JetbrickEngine implements TemplateEngine {
return JetbrickTemplate.wrap(engine.getTemplate(resource));
}
/**
* 获取原始引擎的钩子方法用于自定义特殊属性如插件等
*
* @return {@link JetEngine}
* @since 5.8.7
*/
public JetEngine getRawEngine() {
return this.engine;
}
/**
* 创建引擎
*

View File

@ -1,11 +1,11 @@
package cn.hutool.extra.template.engine.rythm;
import java.util.Properties;
import cn.hutool.extra.template.Template;
import cn.hutool.extra.template.TemplateConfig;
import cn.hutool.extra.template.TemplateEngine;
import java.util.Properties;
/**
* Rythm模板引擎<br>
* 文档http://rythmengine.org/doc/index
@ -51,6 +51,16 @@ public class RythmEngine implements TemplateEngine {
return this;
}
/**
* 获取原始引擎的钩子方法用于自定义特殊属性如插件等
*
* @return {@link org.rythmengine.RythmEngine}
* @since 5.8.7
*/
public org.rythmengine.RythmEngine getRawEngine() {
return this.engine;
}
/**
* 初始化引擎
* @param engine 引擎

View File

@ -25,10 +25,12 @@ public class ThymeleafEngine implements TemplateEngine {
TemplateConfig config;
// --------------------------------------------------------------------------------- Constructor start
/**
* 默认构造
*/
public ThymeleafEngine() {}
public ThymeleafEngine() {
}
/**
* 构造
@ -61,6 +63,7 @@ public class ThymeleafEngine implements TemplateEngine {
/**
* 初始化引擎
*
* @param engine 引擎
*/
private void init(org.thymeleaf.TemplateEngine engine) {
@ -75,6 +78,16 @@ public class ThymeleafEngine implements TemplateEngine {
return ThymeleafTemplate.wrap(this.engine, resource, (null == this.config) ? null : this.config.getCharset());
}
/**
* 获取原始引擎的钩子方法用于自定义特殊属性如插件等
*
* @return {@link org.thymeleaf.TemplateEngine}
* @since 5.8.7
*/
public org.thymeleaf.TemplateEngine getRawEngine() {
return this.engine;
}
/**
* 创建引擎
*

View File

@ -73,6 +73,16 @@ public class WitEngine implements TemplateEngine {
}
}
/**
* 获取原始引擎的钩子方法用于自定义特殊属性如插件等
*
* @return {@link Engine}
* @since 5.8.7
*/
public Engine getRawEngine() {
return this.engine;
}
/**
* 创建引擎
*

View File

@ -1,5 +1,15 @@
package cn.hutool.extra.template;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Dict;
import cn.hutool.extra.template.engine.thymeleaf.ThymeleafEngine;
import org.junit.Assert;
import org.junit.Ignore;
import org.junit.Test;
import org.thymeleaf.context.Context;
import org.thymeleaf.standard.StandardDialect;
import org.thymeleaf.templateresolver.StringTemplateResolver;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.HashMap;
@ -8,15 +18,6 @@ import java.util.List;
import java.util.Locale;
import java.util.Map;
import org.junit.Assert;
import org.junit.Test;
import org.thymeleaf.context.Context;
import org.thymeleaf.templateresolver.StringTemplateResolver;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Dict;
import cn.hutool.extra.template.engine.thymeleaf.ThymeleafEngine;
/**
* Thymeleaf单元测试
*
@ -25,6 +26,20 @@ import cn.hutool.extra.template.engine.thymeleaf.ThymeleafEngine;
*/
public class ThymeleafTest {
/**
* <a href="https://github.com/dromara/hutool/issues/2530">...</a>
* 自定义操作原始引擎
*/
@Test
@Ignore
public void addDialectTest(){
final TemplateEngine engine = TemplateUtil.createEngine();
if(engine instanceof ThymeleafEngine){
final org.thymeleaf.TemplateEngine rawEngine = ((ThymeleafEngine) engine).getRawEngine();
rawEngine.addDialect(new StandardDialect());
}
}
@Test
public void thymeleafEngineTest() {
Map<String, Object> map1 = new HashMap<>();