读书人

宇宙中最容易的freemarker教材即ftl

发布时间: 2012-11-05 09:35:12 作者: rapoo

宇宙中最简单的freemarker教材,即ftl
先在WEB-INF下建一个tlds文件夹,起一个名为my-tags.tld的文件,写上

<?xml version="1.0" encoding="UTF-8"?><taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"version="2.0"xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"><tlib-version>1.0</tlib-version><short-name>g</short-name><uri>uri名称</uri><tag><name>tag名</name><tag-class>要找的类</tag-class><body-content>tagdependent</body-content><!--固定写法--></tag><tag><name>fp</name><tag-class>要找的类</tag-class><body-content>tagdependent</body-content><!-- 如果需要传参数,就加上下面的 --><attribute><name>变量名</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute></tag></taglib>


这样,只需要在jsp页中加上如下的代码
<%@ taglib prefix="ec" uri="/WEB-INF/tlds/my-tags.tld"  %>

,就可以通过<ec:tag名>和<ec:fp 变量名="变量值"/>来调用

然后在类中继承SimpleTagSupport,重写doTag方法,会自动找doTag。
固定需要写的有:
Configuration cfg = new Configuration();//获得模板地址cfg.setDirectoryForTemplateLoading(new File(req.getSession().getServletContext().getRealPath(此处为模板所在的位置)));//比如"/WEB-INF/template"cfg.setObjectWrapper(new DefaultObjectWrapper());Template template = cfg.getTemplate(具体的模板名);Map<String, Object> map = new HashMap<String, Object>();map.put(“随便声明的字符串,共模板文件ftl调用,比如"string"”, 要传到模板上的变量或者对象什么的);JspWriter out = this.getJspContext().getOut();template.process(map, out);out.flush();


如果标签里面需要传参数,就直接声明一个成员变量,set一下就可以了。
在上面填写的template的位置,写ftl的页面
${页面传的值.属性} <#list 变量名(是collection型的)as collection的类型><ul><li><a href="#">${collection的类型.属性}</a></span></li></ul> </#list>


理论知识不会,反正这样做好用。

读书人网 >Web前端

热点推荐