Freemarker教程,Freemarker 自定义方法 【含源码】

JSON 2017-03-01 22:38:51 16286

Freemarker 自定义Function Demo

  Freemarker  自定义 Funcation 其实和我们的自定义标签逻辑是一个意思,就是在加载Template 的时候bean 之间的方法调用。

在项目中的使用详细代码参见 Shiro Demo https://www.sojson.com/jc/shiro.html 

  Freemarker    Demo  实例讲解教程:https://www.sojson.com/jc/freemarker.html

这里要详细说明的一点是, TemplateDirectiveModel 在FreeMarker 2.3.11版本后从原来的 TemplateTransformModel 演变而来, TemplateTransformModel 已经被标记@deprecated (已过时)。

使用Demo 1:

Java代码:

要创建一个Funcation ,就要继承freemarker.template.TemplateDirectiveModel Java  代码路径com.sojson.core.freemarker.function.Option

public class Option implements TemplateMethodModelEx{
	/**
	 * @使用规则
	 *  args[0] : key				 如 : 1
	 *  args[1] : JSON Data,如:'{"1":"男","0":"女","default":"未知"}'
	 *  使用 Option('1','{"1":"男","0":"女","default":"未知"}') 得到的是男
	 */
	@Override
	public Object exec(List args) throws TemplateModelException {
		if(args.size() !=2){
			LoggerUtils.fmtDebug(getClass(), "参数个数不对,得到的个数为:%s",args.size() );
			return "";
		}
		SimpleScalar type  = (SimpleScalar) args.get(0);
		SimpleScalar json  = (SimpleScalar)args.get(1);
		if(StringUtils.isBlank(type,json)){
			LoggerUtils.fmtDebug(getClass(), "有为空的参数!" );
			return "";
		}
		String jsonStr = json.getAsString();
		String typeStr =type.getAsString();
		JSONObject so = JSONObject.fromObject(jsonStr);
		String defau  = so.optString("default");
		String result = so.optString(typeStr)==null?defau:so.optString(typeStr);
		return result ;
	
	}
}

前端使用:

德玛西亚考试成绩:$ {Option('A','{"A":"优秀","B":"及格","C":"不及格","D":"差","default":"缺考"}')}	

结果输出:

德玛西亚考试成绩:优秀


版权所属:SO JSON在线解析

原文地址:https://www.sojson.com/blog/216.html

转载时必须以链接形式注明原始出处及本声明。


附件下载:

备注:点击文件名下载,附件源来自云端,只能在本站下载。复制下载链接无效。

本文主题:

如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。

关于作者
一个低调而闷骚的男人。
相关文章
Freemarker教程Freemarker 自定义方法源码
Springboot 集成Freemarker 自定义标签解决方案
Shiro教程,Shiro 配置文件详细解释,Shiro自定义Filter配置
Freemarker 教程Freemarker 压缩HTML成一行
Shiro教程(八)Shiro Freemarker标签的使用。
Springboot JPA 执行原生sql ,自定义SQL占位符增加参数
Springboot + Freemarker 集成配置
Freemarker Macro,Freemarker 宏参数传递详细讲解
SpringMVC + Freemarker 模版的使用。
Myecilpse,Eclipse安装Freemarker插件【附件】
最新文章
Flink 在又拍云日志批处理中的实践 8580
个推异常值检测和实战应用-又拍云 1705
TCP 和 UDP协议详细讲解,优缺点分析讲解 8055
URL中乱七八糟的字符讲解,来源以及如何解决 5184
HTTP/3 来了,您真的了解它么? 6221
技术选型:为什么批处理我们却选择了Flink 2359
这些表情包你有吗?一起来 Battle 啊 3460
当我谈 HTTP 时,我谈些什么? 11782
新浪短链(t.cn)最新申请官方API的方法讲解。 72718
QUIC / HTTP3 协议详细分析讲解 10571
最热文章
苹果电脑Mac怎么恢复出厂系统?苹果系统怎么重装系统? 653470
最新MyEclipse8.5注册码,有效期到2020年 (已经更新) 603231
我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比 496019
Jackson 时间格式化,时间注解 @JsonFormat 用法、时差问题说明 492966
免费天气API,全国天气 JSON API接口,可以获取五天的天气预报 492902
Elasticsearch教程(四) elasticsearch head 插件安装和使用 452127
免费天气API,天气JSON API,不限次数获取十五天的天气预报 260196
Java 信任所有SSL证书,HTTPS请求抛错,忽略证书请求完美解决 229867
谈谈斐讯路由器劫持,你用斐讯路由器,你需要知道的事情 203369
Elasticsearch教程(一),全程直播(小白级别) 192743
支付扫码

所有赞助/开支都讲公开明细,用于网站维护:赞助名单查看

查看我的收藏

正在加载... ...