freemarker标签(请问下freemarker怎么引入了jstl标签啊)

本文目录
- 请问下freemarker怎么引入了jstl标签啊
- freemarker 指令函数 显示html标签
- freemarker${1.1int} 什么意思
- 如何编写freemarker文件
- FreeMarker中
和 标签的区别 - 在html页面怎么直接使用freemarker标签
请问下freemarker怎么引入了jstl标签啊
首先,在你的ftl模板中添加jstl标签库的引用:《#assign c=JspTaglibs[“/WEB-INF/taglib/c.tld“] /》, c.tld是从 jakarta-tablibs-standard-XXX.jar 这个包的\META-INF里面提取出来的,并且在你工程的lib路径下也需要有这个包。
然后,在模板中按照freemarker方式使用引入的标签: 《@c.set var=“name“ value=“abc“ /》
freemarker 指令函数 显示html标签
html转义的问题
数据里里可以直接存带标签的比如《p style=“color:red;“》一句话《/p》,程序里不要进行任何处理
在Freemarker中如果想显示不带格式的,用《div》${productDetail?html}《/div》
如果想显示HTML格式的《div》${productDetail}《/div》就可以
简单的说, 你想把《p》标签作为文字显示,${productDetail?html},此时页面的文字会显示
《p style=“color:red;“》一句话《/p》
想把这段话显示成红色的,${productDetaill}
freemarker${1.1int} 什么意思
FreeMarker标签使用
一、FreeMarker模板文件主要有4个部分组成
1、文本,直接输出的部分
2、注释,即《#--...--》格式不会输出
3、插值(Interpolation):即${..}或者#{..}格式的部分,将使用数据模型中的部分替代输出
4、FTL指令:FreeMarker指令,和HTML标记类似,名字前加#予以区分,不会输出。
FTL指令规则
FreeMarker有三种FTL标签,这和HTML的标签是完全类似的
开始标签:《#directivename
parameters》
结束标签:《/#directivename》
空标签:
《#directivename
parameters
/》
实际上,使用标签时前面的#符号也可能变成@,如果该指令是一个用户指令而不是系统内建指令时,应将#符号改为@符号
插值规则
FreeMarker的插值有如下两种类型
1、通用插值:${expr}
2、数字格式化插值:#{expr}或者#{expr;format}
通用插值,有可以分为四种情况
a、插值结果为字符串值:直接输出表达式结果
b、插值结果为数字值:根据默认格式(#setting
指令设置)将表达式结果转换成文本输出。可以使用内建的字符串函数格式单个插值,例如
《#setting
number_format
=
“currency“
/》
《#assign
price
=
42
/》
${price}
${price?string}
${price?string.number}
${price?string.currency}
${price?string.percent}
c、输出值为日期值:根据默认格式(由
#setting
指令设置)将表达式结果转换成文本输出,可以使用内建的字符串函数格式化单个插值,例如
《#assign
lastUpdated
=
“2009-01-07
15:05“?datetime(“yyyy-MM-dd
HH:mm“)
/》
${lastUpdated?string(“yyyy-MM-dd
HH:mm:ss
zzzz“)};
${lastUpdated?string(“EEE,MMM
d,yy“)};
${lastUpdated?string(“EEEE,MMMM
dd,yyyy,hh:mm:ss
a
’(’zzz’)’“)};
${lastUpdated?string.short};
${lastUpdated?string.long};
${lastUpdated?String.full};
d、插值结果为布尔值
《#assign
foo=true
/》
${foo?string(“是foo“,“非foo“)}
数字格式化插值
数字格式化插值可采用#{expr;format}的形式来格式化数字,其中format可以是:
mX:小数部分最小X位
MX:小数部分最大X位
例如:
《#assign
x
=
2.582
/》
《#assign
y
=4
/》
#{x;M2};
#{y;M2};
#{x;m1};
#{y;m1};
#{x;m1M2};
#{y:m1M2};
如何编写freemarker文件
将要导出的Word另存为xml格式的文件,打开xml 在其中添加freemarker标签,然后另存为outChairDoc.ftl文件.
第一步要加入Freemarker.jar包。
Servlet代码如下:在outChairDoc.ftl放在包cn.skyclass.jiaowu.freemarker.template下
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
configuration = new Configuration();
configuration.setDefaultEncoding(“utf-8“);
try {
createDoc(response);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void createDoc(HttpServletResponse response) throws Exception {
// 要填入模本的数据文件
Map dataMap = new HashMap();
dataMap.put(“docTitle“, “fdfdfdfdfdfdf用户信息“);
List《ChairInfo》 list = new ArrayList《ChairInfo》();
ChairInfo chairInfo = new ChairInfo();
chairInfo.setChairTitle(“dfdfd“);
chairInfo.setTeacherName(“tea“);
chairInfo.setStartTime(new Date());
chairInfo.setPlace(“dfdfd“);
list.add(chairInfo);
dataMap.put(“chairInfoList“, list);
// 设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以重servlet,classpath,数据库装载,
// 这里我们的模板是放在com.havenliu.document.template包下面
configuration.setClassForTemplateLoading(this.getClass(),
“/cn/skyclass/jiaowu/freemarker/template“);
Template t = null;
try {
// test.ftl为要装载的模板
t = configuration.getTemplate(“outChairDoc.ftl“);
t.setEncoding(“utf-8“);
} catch (IOException e) {
e.printStackTrace();
}
// 输出文档路径及名称
String fileName=“讲座列表.doc“;
response.setContentType(“application/msword“);
response.addHeader(“Content-Disposition“, “attachment; filename=“ + java.net.URLEncoder.encode(fileName, “UTF-8“));//可防止导出的文件乱码
response.setCharacterEncoding(“utf-8“);
PrintWriter out = response.getWriter();
t.process(dataMap, out);
out.close();
}
FreeMarker中和标签的区别
在使用freemarker作为前端页面模板的应用中,会有很多的freemarker模板页面,这些ftl会在不同的页面中重复使用,一是为了简化布局的管理,二是可以重复使用一些代码。
在freemarker中可以通过以下两种方式来使用已经存在的模板。他们是《#inclue》和《#import》标签。
1.《#include》 directive
该标签的作用是将便签中指定的路径的ftl文件导入到使用标签的ftl文件中,包括macro\funtion\variable等所有被引用的ftl内容。被引用的ftl内容会在引用的ftl中重新被渲染最终输出。一般用于页面拆分,便于页面重用,如将header和footer分别抽取出来独自成模板,这样在所有返回给前端的page里都可以include这两个模板了。
《#include “../../header.ftl“》 将相对路径中的header.ftl文件加载到当前文件中。如header.ftl中定义了宏、函数等,在当前文件中可以不加命名空间前缀直接使用。如在header.ftl中
定义了《#marco getBranch》《/macro》,可以在当前文件中直接使用:《@getBranch》...《/@getBranch》.
2.《#import》 directive
该标签的字面意义和include差不多,经常会混淆使用。其含义是将标签中指定的模板中的已定义的宏、函数等导入到当前模板中,并在当前文档中指定一个变量作为该模板命名空间,以便当前文档引用。与include的区别是该指令不会讲import指定的模板内容渲染到引用的模板的输出中。
如:《#import ”../../service.ftl as service》.其作用是将service.ftl中的定义的各宏、函数、变量、自定义、设置等内容用指定的命名空间名称加以引用。但是当前文档不会将import的模板输出插入到import标签的位置。和《#include》标签一样可以使用相对路径和绝对路径引用外部模板。
如:service.ftl中定义的宏如下:《#macro branchService》《/#macro》,在当前文档中可以这样导入《#import “../../service.ftl“ as service》 ,service变量作为该文档中使用service中服务的命名空间,调用时应该这样:《@service.branchService 》....《/@service.branchService》.
在html页面怎么直接使用freemarker标签
不推荐。
你要想使用freemarker标签,必须能够被FreemarkerServlet拦截到,然后解析处理成html
所以你直接用ftl页面就行了,为什么要静态网页和动态模版混着用呢
如果真想用。。web.xml 中freemarker拦截器(制定拦截*.html的页面)

更多文章:
another time(another time和other time的区别)
2026年10月11日 05:00







