`
huaxin803
  • 浏览: 108132 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

FreeMarker基本标签的使用

阅读更多
摘要: 上一节我们接触了一个FreeMarker很简单的例子FreeMarker入门教程,说到底,就是替换模板里相应的标签,这一节我们写一下FreeMarker基本标签的使用

上一节我们接触了一个FreeMarker很简单的例子FreeMarker入门教程,说到底,就是替换模板里相应的标签,这一节我们写一下FreeMarker基本标签的使用


FreeMarker入门教程,相信你还刻模板里的“你好:${username}”,这是简单的输出字符串,和EL很像吧,这一节我们来学其他标签


输出对象及判断标签的引用

我们先定义一个用户类

package com.naxsu.freemarker;
public class User {
    private int id;
    private String name;
    private int age;
    // set get method
    public User(int id, String name, int age) {
        super();
        this.id = id;
        this.name = name;
        this.age = age;
    }
    public User() {
        super();
    }
}

模板中输出用户的相关属性值和对年龄的简单判断文件03.ftl如下

${user.id}-----${user.name}-----${user.age}</h1>
  
<#if user.age lt 12>
    ${user.name}还是一个小孩
<#elseif user.age lt 18>
    ${user.name}快成年
<#else>
    ${user.name}已经成年
</#if>

测试及输出结果

@Test
public void test02() {
    //输出相应的对象
    root.put("user", new User(1,"李四",16));
    fu.print("03.ftl", root);
  }
 
1-----李四-----16</h1>
  
    李四快成年

循环标签的使用

声明两个用户对象,然后在模板文件中循环输出

@Test
public void test02() {
      List<User> users = Arrays.asList(
            new User(1,"张三",22),new User(2,"李四",33));
    root.put("users",users);
    fu.print("03.ftl", root);
}

模板文件,主要是应用循环标签

<#list users as user>
${user.id}---------${user.name}-------${user.age}
</#list>

输出:

1---------张三-------22

2---------李四-------33

页面包含

如果是一个top文件,你想包含在HTML中,即用include 标签

被包含模板文件top.ftl:

<h1>欢迎${username}访问我们的系统</h1>

主页面:

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
</head>
<body>
    <#include "/inc/top.ftl"/>
    <hr/>
    <#list users as user>
        ${user.id}---------${user.name}-------${user.age}<br/>
    </#list>
</body>
</html>

测试方法和输出:

@Test
public void test05() {
    root.put("username", "管理员");
    List<User> users = Arrays.asList(
               new User(1,"张三",22),new User(2,"李四",33));
    root.put("users",users);
    fu.print("05.ftl",root);
}
///////////////////////
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
</head>
<body>
    <h1>欢迎管理员访问我们的系统</h1><hr/>
    1---------张三-------22<br/>
    2---------李四-------33<br/>
</body>
</html>

处理空值

在这里新添加一个对象Group,在User引用这个对象,没给group对象赋值的情况下测试处理空值的情况。

Group.java

package com.naxsu.freemarker;
public class Group {
    private String name;
    // set get method
    public Group(String name) {
        super();
        this.name = name;
    }
    public Group() {
    }
}

在User.java中引用Group对象

public class User {
    private Group group;
    //set get method
}

测试方法

@Test
public void test06() {
    //此时user对象并没有group的值
    root.put("user",new User(1,"地点",22));
    fu.print("06.ftl",root);
}

用!符号可以处理空值,在!号后面加字符串是在此对象不存在的情况下,显示该字符串。

如果对象是空值,并没有在后面加!号,会直接报错。

${user.id}-------${user.name}------${user.group!}
${user.id}-------${user.name}------${user.group!"此时user对象并没有group的值"}
1-------地点------
1-------地点------此时user对象并没有group的值
下面也会出错,因为此方式加!freemarker仅仅只会判断group.name是不是空值
${user.group.name!}
此问题的解决方案是把整个导航用小括号包起来,然后再加!
${(user.group.name)!"没有任何值存在"}
普通的字符串也可以用!来获取空值:
${(a.b)!"没有a.b元素"}
没有a.b元素
在if标签中可以用两个问号来判断是否为空
<#if (a.b)??>
   不为空
<#else>
   为空
</#if>
为空

定义变量

<#--定义变量-->
<#assign username="张三"/>
${username}

@Test
public void test07() {
   root.put("now",new Date());
   root.put("username", "李四");
   fu.print("07.ftl",root); }
张三

本文链接:FreeMarker基本标签的使用,本文由huangyineng原创,转载请注明出处


分享到:
评论

相关推荐

    freemarker基本语法整理

    freemarker常用标签整理,struts2+freemarker做表现层应用,flt中freemarker写法

    Freemarker入门实例

    Freemarker基本标签 ,有简单实例,对初学者很有用。

    freemarker总结

    其它的运行符可以作用于数字和日期,但不能作用于字符串,大部分的时候,使用gt等字母运算符代替&gt;会有更好的效果,因为 FreeMarker会把&gt;解释成FTL标签的结束字符,当然,也可以使用括号来避免这种情况,如:(x&gt;y)&gt; ...

    超完整FreeMarker中文教程,代码

    什么是FreeMarker? ................................................................................................. 7 我们应该阅读什么内容? .............................................................

    基于SpringJdbc+freemarker实现,具备Mybatis一样的SQL分离和逻辑标签能力的轻量级JAVA持久层框架

    MiniDao 是一款轻量级JAVA持久层框架,基于 SpringJdbc + freemarker 实现,具备Mybatis一样的SQL分离和逻辑标签能力。Minidao产生的初衷是为了解决Hibernate项目,在复杂SQL具备...SQL标签采用Freemarker的基本语法

    freemarker+struts2仿QQ分页效果

    最近比较闲,想起来一直没时间做一个好点的分页效果。... jar包就是strut2的基本的那几个就可以了,当然freemarker那个别忘记了 具体使用可以看我的博客:http://hellotommy.iteye.com/blog/785242

    FreeMarker 手册

    2.1 基本内容 ................................................................................................... 19 2.2 类型 ..............................................................................

    struts2讲义_吴峻申

    5.3.3 if、else、elseif标签使用介绍 81 5.3.4 iterator标签使用介绍 82 5.3.5 merge标签使用介绍 83 5.3.6 sort标签使用介绍 84 5.3.7 subset标签使用介绍 86 5.4 Struts2数据标签简介 88 5.4.1 action标签使用介绍...

    jfinal插件集合demojfinal-demo.zip

    1.使用jfinal-shiro实现数据库级别的权限灵活定制,和freemarker的权限标签 2.使用jfinal-captcha实现验证码 3.使用jfinal-web实现根据ajax请求返回json数据,其他返回默认数据,支持继承JFController使用getModels...

    Struts2 WebWork 2.0 Tags API 中文文档 [CHM]

    除了基本的参考外,我们将提供个个标签在所支持模板语言中的例子。 通用标签(General Tags) 通用标签用于在你的页面被渲染的时候控制流程。它们也可以用于从Action和Value Stack之外提取数据,比如...

    深入浅出Struts2(附源码)

    14.3.1 使用基本身份验证方法 243 14.3.2 使用基于表单的身份验证方法 245 14.4 隐藏资源 247 14.5 Struts安全配置 248 14.6 以编程方式提高安全性 250 14.6.1 getAuthType方法 250 14.6.2 isUserInRole方法 ...

    深入浅出Struts 2 .pdf(原书扫描版) part 1

    14.3.1 使用基本身份验证方法 243 14.3.2 使用基于表单的身份验证方法 245 14.4 隐藏资源 247 14.5 Struts安全配置 248 14.6 以编程方式提高安全性 250 14.6.1 getAuthType方法 250 14.6.2 isUserInRole方法 250 ...

    spring in action英文版

    第一部分 Spring基础  第1章 开始Spring之旅  1.1 为什么使用Spring ... 11.4.6 使用Acegi的标签库  11.5 保护方法调用  11.5.1 创建一个安全切面  11.5.2 使用元数据保护方法  11.6 小结

    Struts2入门教程(全新完整版)

    6.其它常用标签的使用(代码参名为“补充”的文件夹下的tag.jsp) 45 七、国际化 47 1.action级别下的国际化 47 2.配置package的资源文件 48 3.app级别的资源文件 48 4.使用资源文件的原理 49 5.选择使用资源文件 49...

    Spring中文帮助文档

    13.9. 使用Spring的表单标签库 13.9.1. 配置 13.9.2. form标签 13.9.3. input标签 13.9.4. checkbox标签 13.9.5. checkboxes标签 13.9.6. radiobutton标签 13.9.7. radiobuttons标签 13.9.8. password标签 ...

    Spring API

    13.9. 使用Spring的表单标签库 13.9.1. 配置 13.9.2. form标签 13.9.3. input标签 13.9.4. checkbox标签 13.9.5. checkboxes标签 13.9.6. radiobutton标签 13.9.7. radiobuttons标签 13.9.8. password标签 ...

    java web 开发详解

    但基本也都是遵循特定的路数的:使用Servlet或者Filter拦截请求,使用MVC的思想设计架构,使用约定,XML或 Annotation实现配置,运用Java面向对象的特点,面向抽象实现请求和响应的流程,支持Jsp,Freemarker,...

Global site tag (gtag.js) - Google Analytics