今天想要在Freemarker模版文件里使用HttpServletResponse对象的encodeURL方法,对页面链接的URL进行 Encode。据我所知,在Freemarker模版文件里是可以使用scriptlet和其他第三方标签的,可是当我直接在<%%>里书写 scriptlet时,却被原封不动地输了出来,于是就尝试引入JSTL,以便使用其中的<c:url value=""/>标签来达到同样目的:
同时将JSTL所需.jar文件都放置在/WEB-INF/lib目录下以及将c.tld文件放置在/WEB-INF目录下,结果却一直报错。在网 上到处搜索,包括国外的论坛,发现这个问题一直普遍存在,用了许多别人给出的方法都依然无法解决。正当我苦恼不己时,突然想到上次曾经使用过 Freemarker的自定义方法,而我这次只不过是需要使用一个简单的方法而已,自己封装一下使之成为Freemarker支持的方法不就行了,何必大 费周折呢?
要想使用Freemarker支持的自定义方法,需要实现freemarker.template.TemplateMethodModel接 口,然后将方法对象放入到Freemarker的数据模型中,这样在ftl文件中便可以像使用Freemarker内置方法一样使用该方法了。
import java.util.List; import javax.servlet.http.HttpServletResponse; import freemarker.template.TemplateMethodModel; import freemarker.template.TemplateModelException; /** * Freemarker自定义方法 * 实现response.encodeURL(url)功能 */ public class EncodeURLMethod implements TemplateMethodModel { private HttpServletResponse response; /** * 带参数的构造函数 * @param response HttpServletResponse对象 */ public EncodeURLMethod(HttpServletResponse response) { this.response=response; } /** * 执行方法 * @param argList 方法参数列表 * @return Object 方法返回值 * @throws TemplateModelException */ public Object exec(List argList) throws TemplateModelException { if(argList.size()!=1) //限定方法中必须且只能传递一个参数 { throw new TemplateModelException("Wrong arguments!"); } //返回response.encodeURL执行结果 return response.encodeURL((String)argList.get(0)); } }
输出模版数据模型时,将EncodeURLMethod的实例对象放入模型中:
- dataMap.put("encodeURL", new EncodeURLMethod(context.getResponse()));
在Freemarker模版文件中这样使用:
- ${encodeURL("/news/showNews.sf?id=123456")}
输出结果实际就是使用response.encodeURL输出的结果。
相关推荐
NULL 博文链接:https://zhenghuazhi.iteye.com/blog/1923544
里面 集合了 一个 简单的 Freemarker demo 代码 和一个 freemarker 自定义标签代码
spring mvc freemarker 自定义标签demo spring mvc 通过自定义的标签在jsp页面调用,初学,记录下做个备忘
一个用FTL定义的非常通用数据分页指令,有源码,有使用示例。使用效果图可以参看本人博客中的相关文章:http://blog.csdn.net/qjyong/archive/2009/10/18/4693142.aspx
在jfinal的基础上,实现freemarker自定义标签的自动扫描和注册,本资源包不含jfinal框架,需在已有框架的基础上添加包中的代码,如需jfinal框架请自行到官网下载
NULL 博文链接:https://asialee.iteye.com/blog/2062313
NULL 博文链接:https://renxin-327666062-qq-com.iteye.com/blog/1532731
FreeMarker(使用方法)FreeMarker(使用方法)FreeMarker(使用方法)FreeMarker(使用方法)很好的pdf书
该例采用单元测试,实现fremarker通用下拉框,满足所有web下拉框需求
1. 使用Apache POI 3.9 自定义样式导出Excel文件; 2. 使用freemarker动态生成word .doc文档(带图片Word以及复杂格式word) 详细说明见个人博客及 github: https://github.com/DuebassLei/excel-poi
spring boot + mybaits +freemarker +maven 架构来袭 注解版 spring boot + mybaits +freemarker +maven 架构来袭 注解版
springsecurity(用spring ibatis freemaker)实现的用户自定义的权限管理页面, 里头包括数据库脚本 和原数据 和原代码 主要参考http://blog.csdn.net/k10509806/article/details/6369131 这个人的文章做的
使用Spring boot + FreeMarker 实现代码生成功能,完整案例可以查看 eladmin 项目,教程地址: https://www.ydyno.com/archives/1177.html
springMVC3.2+Hibernate4+freemarker 代码框架采用springMVC3.2.4+hibernate4.2.8+freemarker2.3.16 功能方面只是一个简单的注册登录,前台使用freemarker渲染,使用了freemarker自定义标签。
使用Freemarker模版生成不同的静态文件,该工具类使用简单,方法说明:包含所需的参数,可以进行二次封装
赠送jar包:freemarker-2.3.31.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
赠送jar包:freemarker-2.3.30.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
springboot如何使用Freemarker模版引擎
freemarker freemarker freemarker freemarker freemarker freemarker freemarker freemarker
Velocity 和 FreeMarker区别 对于大部分的应用来说,使用 FreeMarker 比 Velocity 更简单,因为 Velocity 还必须编写一些自定义的