×

freemarker标签

freemarker标签(freemarker${1.1int} 什么意思)

admin admin 发表于2023-01-10 14:38:42 浏览44 评论0

抢沙发发表评论

本文目录

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 指令函数 显示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}

在js中使用freemarker的标签比如 include 等


你可以用$(document).ready(function(){
$(’#div’).text(’《#include “uav/page/center.html“ encoding=“utf-8“/》’);
});或者把你的这段js代码放到页面的末尾.都是等页面加载完再加载这段!

如何编写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();
}

jsp 能用freemarker标签么


  在jsp页面中使用FreeMarker标签,需要在html引入相应的标签,如下步骤:
  1.在web.xml文件中启动JspSupportServlet:
  在web.xml文件中作如下配置
  Xml代码
  《servlet》
  《servlet-name》JspSupportServlet《/servlet-name》
  《servlet-class》
  org.apache.struts2.views.JspSupportServlet
  《/servlet-class》
  《!--配置JspSupportServlet自启动--》
  《load-on-startup》1《/load-on-startup》
  《/servlet》
  
  2.在FreeMarker模板文件中使用“assign指令”导入标签库
  Java代码
  《#assign s=JspTaglibs[“/WEB-INF/struts-tags.tld“] /》
  
  3.编写登录页面FTL文件:
  Html代码
  《#assign s=JspTaglibs[“/WEB-INF/struts-tags.tld“] /》
  《html》
  《head》
  《title》登录页面《/title》
  《/head》
  《body》
  登陆
  《@s.form action=“Login.action“》
  《@s.textfield name=“username“ label=“用户名“/》
  《@s.textfield name=“password“ label=“密码“/》
  《@s.submit value=“提交“/》
  《/@s.form》
  提示:${name1}=${name2}
  《/body》
  《/html》
  注意:
  name1和name2属性,是后面从Action里面获取的属性,这里是为了验证在模版中获取属性值
  WEB容器默认不会处理 FreeMarker模板页面,如果直接通过浏览器直接请求该页面,否则看到的不是我们想要的结果,而是该模板页面的源代码

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


  1. 首先,在你的ftl模板中添加jstl标签库的引用:《#assign c=JspTaglibs[“/WEB-INF/taglib/c.tld“] /》, c.tld是从 jakarta-tablibs-standard-XXX.jar 这个包的\META-INF里面提取出来的,并且在你工程的lib路径下也需要有这个包。

  2. 然后,在模板中按照freemarker方式使用引入的标签: 《@c.set var=“name“ value=“abc“ /》


freemarker 怎么引用jsp自定义标签


struts-cleanup org.apache.struts2.dispatcher.ActionContextCleanUp sitemesh-freemarker org.apache.struts2.sitemesh.FreeMarkerPageFilter default_encoding UTF-8 struts2 org.apache.struts2.dispatcher.FilterDispatcher struts-cleanup /* sitemesh-freemarker /* struts2 /* JspSupportServlet org.apache.struts2.views.JspSupportServlet 1 struts-cleanup org.apache.struts2.dispatcher.ActionContextCleanUp sitemesh-freemarker org.apache.struts2.sitemesh.FreeMarkerPageFilter default_encoding UTF-8 struts2 org.apache.struts2.dispatcher.FilterDispatcher struts-cleanup /* sitemesh-freemarker /* struts2 /* JspSupportServlet org.apache.struts2.views.JspSupportServlet 1 本文的重点是如何在JSP中使用FreeMarker标签,有人可能会问:为什么不直接在FreeMarker模版文件中使用JSP标签呢? Login Hello World. ${y} ${x_index + 1}. ${x}, Login Hello World. ${y} ${x_index + 1}. ${x}, 大家注意了FreeMarker的部分必须放在标签与之间,否则JSP不会解析FreeMarker的内容,会把源码输出在页面之中

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的页面)