转载:
http://tech.ddvip.com
package freemarker;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;
import freemarker.template.Configuration;
import freemarker.template.Template;
public class TestIf{
private Configuration cfg;
public Configuration getCfg(){
return cfg;
}
public void init()throws Exception{
cfg=new Configuration();
cfg.setDirectoryForTemplateLoading(newFile("bin/freemaker"));
}
public static void main(String[]args)throwsException{
TestIf obj=new TestIf();
obj.init();
Map root=new HashMap();
root.put("user","java2000.net");
Map latestProduct=new HashMap();
latestProduct.put("url","http://www.java2000.net");
latestProduct.put("name","Java世纪网");
root.put("latestProduct",latestProduct);
Templatet=obj.getCfg().getTemplate("TestIf.ftl");
Writer out=new OutputStreamWriter(newFileOutputStream("TestIf.html"),"GBK");
t.process(root,out);
System.out.println("Successfull................");
}
}
模板
<html>
<head>
<title>Welcome!</title>
</head>
<body>
<h1>
Welcome${user}<#ifuser=="java2000.net">,ourbelovedleader<#else>myfriend</#if>!
</h1>
<p>Ourlatestproduct:
<ahref="${latestProduct.url}">${latestProduct.name}</a>!
</body>
</html>
输出结果
<html>
<head>
<title>Welcome!</title>
</head>
<body>
<h1>
Welcomejava2000.net,ourbelovedleader!
</h1>
<p>Ourlatestproduct:
<ahref="http://www.java2000.net">Java世纪网</a>!
</body>
</html>
结果分析:
<#if
语句通过后面的测试条件,如果为true,则显示
如果不等于,则进入<#else>部分显示,
以</#if>结束。
分享到:
相关推荐
在FreeMarker中,`<#if>`语句用于进行条件判断,如果表达式的值为真,则执行相应的代码块。在某些情况下,我们可能需要在`<#if>`语句内部再嵌套`<#if>`,这就是所谓的`if`嵌套。 首先,让我们理解`<#if>`的基本语法...
FreeMarker 是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯 Java 编写。FreeMarker 被设计用来生成 HTML Web 页面,特别是基于 MVC 模式的应用程序。虽然 FreeMarker 具有一些编程的能力,但通常由 ...
2. **控制结构**:Freemarker支持条件语句(`<#if>`、`<#else>`、`<#elseif>`)和循环(`<#foreach>`)等,用于根据数据动态生成内容。 3. **模板继承**:通过`<#assign>`和`<#import>`指令,可以实现模板间的变量...
3. 标准指令:Freemarker提供了一系列标准指令,如`#if`、`#foreach`、`#set`等,用于控制流程和定义变量。 二、Freemarker语法 1. 输出表达式: `${expression}` 用于输出变量或表达式的值。例如,`${user.name}`...
Freemarker提供了条件语句(`<#if>`, `<#else>`, `<#elseif>`)和循环语句(`<#foreach>`),可以实现复杂的逻辑控制。 9. **内置指令和函数** Freemarker有许多内置的指令,如`include`用于包含其他模板,`...
- **条件判断**:利用Freemarker的条件语句,根据数据状态展示不同内容。 - **分页处理**:Jeecms的分页标签能轻松实现内容的分页显示。 5. **学习资源** - `Freemaker_入门+深入+开发指南+学习笔记.doc`:这份...
Freemarker支持条件语句(`<#if>`、`<#else>`)、循环(`<#foreach>`)以及自定义函数(`<#function>`),使得模板可以处理更复杂的情况。 在实际应用中,我们通常会将这些步骤封装到一个服务类或工具类中,以便在...
- `<#if ...>`、`<#else>`、`<#elseif ...>`:条件判断语句。 - `<#foreach ...>`:循环语句,通常用于遍历集合数据。 - `<@...>`:宏,可以复用代码片段。 6. **运行与测试** - 运行SpringBoot应用,访问`...
在Struts2中使用FreeMarker,主要涉及以下几个核心概念和步骤: 1. **配置FreeMarker**: - 在Struts2的配置文件(通常为struts.xml)中,你需要指定FreeMarker作为默认的视图技术。 - 配置FreeMarker的路径,...
在IT领域的模板引擎技术中,FreeMarker是一种广泛使用的开源模板引擎,它被设计用于生成文本输出,如HTML、XML或纯文本。FreeMarker提供了一种灵活且强大的方式来处理动态内容,尤其适用于Web开发中的视图层。在...
3. **模板设计**:Freemarker支持条件语句、循环、包含其他模板等功能,使得模板设计灵活且易于维护。 4. **缓存机制**:Freemarker有内置的模板缓存,可以提高性能,尤其是在高并发环境下。 5. **国际化与本地化*...
3. **控制结构**:Freemarker提供了丰富的控制结构,如条件语句(`<#if>`、`<#else>`、`<#elseif>`)、循环(`<#foreach>`)、以及异常处理(`<#try>`、`<#catch>`)等,使得模板具有一定的逻辑处理能力。...
- `#if...#end`:条件判断语句,可以根据条件显示或隐藏部分内容。 - `#foreach...#end`:循环结构,可以遍历集合并多次输出模板块。 - `#set...#end`:设置变量,可以在模板内部定义新的变量。 - `#include...`...
8. **条件语句和循环结构**: 如`<#if>`, `<#else>`, `<#elseif>`用于条件判断,`<#foreach>`用于遍历集合,提供了丰富的控制流程。 9. **模板继承与布局**: Freemarker支持模板继承,通过`<#include>`和`<#assign>`...
3. 配置视图解析器 bean:接下来,定义一个`FreeMarkerConfigurer`实例,用于设置Freemarker的相关属性,如编码、模板路径等: ```java @Bean public FreeMarkerConfigurer freeMarkerConfigurer() { ...
3. **Freemarker指令(Directives)**:这些是控制流程或结构的特殊标记,如`<#if>`、`<#foreach>`、`<#assign>`等。它们允许你在模板中进行条件判断、循环和变量赋值。 4. **内置函数(Built-in Functions)**:...
- 条件语句:`<#if>...<#else>...<#endif>`。 - 循环:`<#list>...<#end>`。 4. **函数调用**:Freemarker支持自定义函数,如 `${user.formatDate(date)}`。 四、实际应用示例 假设我们有一个用户类`User`,...
4. **模板语法**: FreeMarker支持多种语法,如条件语句(`<#if>`、`<#else>`、`<#elseif>`)、循环(`<#foreach>`)、函数调用等。你可以通过官方文档详细了解这些语法。 5. **模板缓存**: 为了提高性能,...
3. **编写 FreeMarker 模板**:设计一个 .ftl(FreeMarker Template Language)文件,其中包含 Word 文档的结构和占位符。占位符将以 `${}` 包围,用于在运行时被数据模型中的值替换。 4. **加载模板**:使用 ...