freemarker 模版简介 if指令

简介:

1.${expression}  :有点像JSP中的el表达式,但是在freemarker中这个不叫el表达式,功能上大致一样,它将会输出真实的值来替换花括号里的表达式,向这样的表达式(指的是在freemarker中)这样的表达式被称为插值.

2.Comments注释:freemarker的注释其实和html的注释是差不多的这个是html的注释(<!---->),那么freemarker的注释就是将那个感叹号换成了#号也就是<#--和-->来分隔任何介于这两个分隔符之间的内容将都会被freemarker忽略,不会输出.

原文:http://blog.csdn.net/yhc13429826359/article/details/9130503

3.FTL标签(Freemarker模版语言的标签)和HTML有点相似之处,就是标签都是成对出现的(但是这个在html中不是绝对的),这些标签的前缀一般以#开头,写过自定义JSP标签的就很熟悉什么是前缀,在以后的高级中将会碰到以@号前缀开头的标签,这个就是freemarker的用户自定义标签了,前缀以示区分.


freemarker有很多指令,在这里就只说其中3个指令最常用的,其实这个文章完全是参照freemarker官方文档写的,只不过将叙述直接编程了代码.

在这里给大家推荐一个工具就是Jboos Tools有一个freemarker IDE 有语法提示和检查功能,可以加快开发效率和速度,在运行前就能找到错误值所在.


项目结构图:



Java类 Test.java

package org.freemarker.test;

import java.io.File;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;

import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateException;

public class Test {
	public static void main(String[] args) throws IOException,
			TemplateException {

		Configuration cfg = new Configuration();
		// 指定模板文件从何处加载的数据源,这里设置成一个文件目录。
		cfg.setDirectoryForTemplateLoading(new File("./template"));
		// 指定模板如何检索数据模型,这是一个高级的主题了…
		// 但先可以这么来用:
		cfg.setObjectWrapper(new DefaultObjectWrapper());

		
		// 创建根哈希表
		Map<String,Object> root = new HashMap<String,Object>();
		// 在根中放入字符串"username"
		root.put("username", "admin");
		//当前是星期几0-6
		root.put("today", 0);
		//系统异常数量
		root.put("errors",12 );
		
	
		// 获取模版
		Template temp = cfg.getTemplate("if.ftl");
		Writer out = new OutputStreamWriter(System.out);
		temp.process(root, out);
		out.flush();
		out.close();
	}
}

模版 if.ftl

 
 
 <#--
     在这里我们告诉freemarker只有当username等于admin的时候才显示提示信息,当
  if后面的条件是false值时,if标签内部非内容将被忽略.
  
  ==是来判断她两侧的值是否相等的操作符,比较的结果是boolean值
 -->
<#if username == "admin">
    你好,超级管理员!
</#if>

<#--
 当在星期天(星期天用0代表)的时候,输出以下信息
 注意:数字不用放在引号内,如果将数字0放在引号内("0"),freemarker会将其误判为
 字符串类型.
-->

<#if today==0>
  周末好,超级管理员.
</#if>

<#--
 也可以这样表示大于或者是小于,!=就是不等于
 以下的意思是如果异常数量大于0就提示管理员异常数量,如果不大于0就提示无异常
 注意使用原始的> ,<或者是 !=,一定要用()括号括起来,否则freemarker将
 视为这是该标签的回标签,那就是异常了.
-->
<#if (errors > 0) >
系统出现异常,异常数量为${errors}
<#else>
系统未出现异常.
</#if>





最后的输出结果:




阅读更多 登录后自动展开
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页