FreeMarker基本标签的使用

来源:互联网 发布:网络监控怎么设置 编辑:程序博客网 时间:2024/05/16 14:24
摘要: 上一节我们接触了一个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>

测试及输出结果

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

循环标签的使用

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

@Testpublic 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>

测试方法和输出:

@Testpublic 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}

测试方法

@Testpublic 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}

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

张三

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


原创粉丝点击