上一节我们接触了一个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)!"没有任何值存在"}
|
普通的字符串也可以用!来获取空值:
${(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基本数据类型
分享到:
相关推荐
在提供的"TestFreemarkerDiy"示例中,可能包含了一个简单的自定义标签实现以及一个演示如何使用该标签的Freemarker模板文件。通过分析这个示例,我们可以学习如何在实际项目中应用自定义标签,以提高模板的可维护性...
3. **Jeecms标签使用** - **Jeecms简介**:Jeecms是一款基于Java的企业级内容管理系统,它提供了丰富的自定义标签供开发者使用。 - **标签语法**:Jeecms的标签通常以`{`开头,如`{dede:arclist}`,用于列出文章...
4. **FTL标签**:即FreeMarker模板语言标签,这些标签允许在HTML标记之外使用FreeMarker特有的语法,以便更好地控制模板的行为。例如,在HTML中使用#作为前缀的标签,会将其识别为FreeMarker指令而非HTML标签。 ###...
这就是FreeMarker在Grails中的基本应用,它允许开发者以声明式的方式处理数据,减少了模板代码中的业务逻辑。 总结来说,这个压缩包内容可能包括如何在Grails项目中配置和使用FreeMarker,以及如何处理领域类之间的...
首先,让我们了解FreeMarker的基本概念。FreeMarker是一个基于模板的语言,它与Java代码分离,允许开发者用简单的模板语法来表示数据。在Java中,我们通常会创建一个模型对象(Model),填充业务数据,然后使用...
在 Freemarker 中,使用 FTL 标签来实现指令的功能。与 HTML 标签相似,Freemarker 支持三种类型的 FTL 标签: - **开始标签**:`<#directive_name parameter>` - **结束标签**:`</#directive_name>` - **空标签**...
1. **基本语法**:Freemarker使用简单的模板语言,主要包括变量表示(${})、控制结构(if/else、foreach)、条件表达式(?)和函数调用(例如,日期和时间的格式化)。 2. **模板设计模式**:如如何定义模板布局,...
模板中使用了Freemarker的标签语法,例如`#foreach`循环、`#set`变量赋值等,以适应不同模型数据的变化。模板文件通常预定义了文件结构和格式,只需通过替换变量即可生成特定的配置文件。 ### 三、工具类`Assistant...
Freemarker还支持宏、函数、自定义标签库等功能,可以极大地增强模板的灵活性和可复用性。 在实际应用中,控制器层会将模型数据传递给视图,如下所示: ```java @GetMapping("/users") public String getUsers...
### FreeMarker使用详解 #### 一、快速入门:模板+数据模型=输出 FreeMarker是一种强大的模板引擎,专为Web开发设计,它...掌握FreeMarker的基本概念和使用方法,对于提高Web开发效率和提升用户体验具有重要意义。
一、Freemarker基本概念 1. 模板:Freemarker模板是HTML或者其他格式的文本文件,其中包含了Freemarker特定的指令和表达式,用来插入、控制或计算数据。 2. 数据模型:这是提供给Freemarker模板的数据源,通常由应用...
FreeMarker是一款模板引擎,即一种基于模板处理文本的技术。...它使用一种简单的模板语言,在服务器端...由于文档的篇幅限制,无法详细展示每一节的全部内容,但通过这些要点能够了解FreeMarker的基本使用方法和高级特性。
以上是对Velocity和FreeMarker的基本介绍和比较,它们都是Java Web开发中的重要工具,理解它们的特性和应用场景有助于选择最适合项目的技术栈。对于标签“源码”和“工具”,我们可以进一步研究这两个模板引擎的源...
4. 国际化支持:通过使用`<#t>`标签,FreeMarker可以轻松实现多语言环境下的文本处理。 三、FreeMarker的常用语法 1. 输出表达式:`${expression}`,用于输出数据模型中的值。 2. 条件语句:`<#if>...<#else>......
- **阅读建议**:对于初学者而言,建议首先了解FreeMarker的基本概念和使用场景;然后,可以重点关注模板语言的语法结构,掌握变量引用、表达式计算、控制结构等基础知识点;最后,深入学习自定义标签、性能优化等...
Freemarker是一款强大的模板引擎,常...通过详细研读这份教程,开发者不仅可以掌握Freemarker的基本使用,还能深入理解其高级特性和优化技巧,从而在实际工作中更高效地生成静态文件,提升Web应用的性能和用户体验。
一、Freemarker基本概念 1. 模板:Freemarker的核心是模板,模板是HTML或其他文本文件,其中包含Freemarker表达式和指令,这些元素会被解释并替换为实际值。 2. 数据模型:数据模型是Java对象集合,它们提供给模板...
以上就是FreeMarker与Apache POI结合生成Word文档并插入图片的基本流程。这种组合可以灵活地创建复杂的动态文档,适应各种需求,例如报告生成、批量文档定制等。开发者可以根据具体需求调整模板设计和数据模型,以...
在学习和使用Freemarker 2.3.10时,建议首先了解其基本语法,然后逐步熟悉高级特性。实践中,结合实际项目需求,可以创建自定义的Freemarker配置,以优化模板解析和渲染过程。此外,与Spring框架集成是常见的应用...