java中使用freemarker生成静态页面文件(支持多语言):
FreeMarkerTest:
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Locale;
import freemarker.template.Configuration;
import freemarker.template.Template;
public class FreeMarkerTest {
public static void main(String[] args) {
FreeMarkerTest test = new FreeMarkerTest();
test.getFile();
test.getFile(Locale.JAPAN);
}
public void getFile() {
Configuration freemarkerCfg = new Configuration();
freemarkerCfg.setClassForTemplateLoading(this.getClass(),"/");
freemarkerCfg.setEncoding(Locale.getDefault(),"UTF-8");
Template template;
try {
template = freemarkerCfg.getTemplate("t.ftl");
template.setEncoding("UTF-8");
File htmlFile = new File("t.html");
Writer out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(htmlFile), "UTF-8"));
HashMap propMap = new HashMap();
propMap.put("user", "hermit");
template.process(propMap, out);
out.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
public void getFile(Locale loc) {
Configuration freemarkerCfg = new Configuration();
freemarkerCfg.setClassForTemplateLoading(this.getClass(),"/");
freemarkerCfg.setEncoding(Locale.getDefault(),"UTF-8");
Template template;
try {
template = freemarkerCfg.getTemplate("t.ftl",loc);
template.setEncoding("UTF-8");
File htmlFile = new File("t_"+loc.getLanguage()+"_"+loc.getCountry()+".html");
Writer out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(htmlFile), "UTF-8"));
HashMap propMap = new HashMap();
propMap.put("user", "hermit");
template.process(propMap, out);
out.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
}
t.ftl
<html>
<head>
<title>Welcome!</title>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
</head>
<body>
<h1>Welcome ${user}!</h1>
</body>
</html>
t_zh_CN.ftl
<html>
<head>
<title>欢迎!</title>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
</head>
<body>
<h1>你好 ${user}!</h1>
</body>
</html>
freemarker支持多语言国际化,只要把模板名称安装资源文件的写法就可以了,也就是name_语言_国家地区.ftl
如果找不到对应的语言,就会用默认语言的模板。
顺便抱怨一下,freemarker对于空值的处理太霸道了,没有值你就写个空或者写KEY也可以啊,弄一堆出错信息在那。。。。。。。。。。。。。。
分享到:
相关推荐
在软件开发过程中,尤其是企业级应用,大量重复性的代码编写工作是常见的现象,比如创建与数据库表对应的Java实体类、Service接口及实现、Controller以及MyBatis的Mapper和XML配置文件。为了提高开发效率,减少人力...
总的来说,“使用FreeMarker生成java代码”这个话题涵盖了模板引擎的基本概念、FreeMarker的语法特性以及如何结合Java应用来实现代码生成。通过学习和实践,开发者可以更加熟练地运用FreeMarker这一强大的工具,提升...
在Java开发中,FreeMarker是一个强大的模板引擎,常用于生成HTML、XML等动态内容。然而,它也可以扩展到处理其他类型的文档,如Microsoft Word(....这种技术组合使得在Java应用程序中生成和修改Word文档变得更加便捷。
* 非Web应用程序:FreeMarker也可以应用于非Web应用程序环境,如生成XML、RTF、Java源代码等。 * 模板引擎:FreeMarker可以作为模板引擎,用于生成各种文本输出。 FreeMarker是一个功能强大且灵活的模板引擎,广泛...
5. **数据模型**:在Java程序中,你需要创建一个数据模型,通常是一个Map或一个自定义的Java对象,其中包含了将要填充到模板中的数据。这些数据可以是列表、数组或其他复杂的数据结构。 6. **模板与数据合并**:...
在Java应用中,我们通常会创建一个FreeMarker模板,这个模板包含静态文本和变量占位符。当程序运行时,这些占位符会被实际的数据替换,生成最终的文件。FreeMarker支持条件判断、循环、包含其他模板等功能,使得代码...
在Java应用中,使用FreeMarker导出Word文档可以提供灵活的文本和数据结合的方式,尤其适用于生成报告、合同等复杂格式的文档。本篇将详细介绍如何使用FreeMarker与Java结合来导出包含多张图片的Word文档。 1. **...
- **数据模型**: Java应用程序会创建一个数据模型,将数据传递给Freemarker,模板则根据这些数据生成最终输出。 2. **Freemarker语法** - **变量表达式**: `${variable}` 用于输出Java对象的属性值。 - **三元...
通过运行这个小demo,初学者可以亲身体验Freemarker的工作流程,了解如何在Java应用中集成模板引擎,以及如何设计和使用模板。同时,这个项目也是练习Java与Freemarker结合的好素材,能够帮助初学者更好地理解和掌握...
FreeMarker 是一个强大的模板引擎,常用于Java应用中生成HTML、XML等动态内容。它允许开发者使用简单的模板语言(TL)来分离业务逻辑和视图层。本篇将深入探讨如何自定义FreeMarker标签,以扩展其功能并适应特定项目...
在本项目中,Freemarker被用来生成Java源代码,这些代码通常包括实体类(Entity)、数据访问对象(DAO)、服务接口(Service Interface)和服务实现(Service Implementation)等,它们与数据库表一一对应。...
Freemarker是一个强大的模板引擎,常用于Web应用中的视图层渲染,特别是在Java环境中。它是一种基于文本模板的语言,能够将数据模型与HTML或其他格式的文档结合,生成动态内容。这个2.3.18版本的中文手册是开发者...
在企业级应用中,这种技术尤其有用,因为它允许开发者根据数据库或其他数据源中的信息自动生成Word文档,无需手动编写。 Java是面向对象的编程语言,而Freemarker则是一个模板引擎,它主要用于生成文本输出,如HTML...
例如,运行`wsdl2java`命令并指定WSDL文件路径,就能自动生成相应的Java源码,然后编译这些源码,就可以在Java应用中直接调用Web服务了。 以上四个知识点涵盖了Java开发中数据交换、网络通信、动态内容生成和Web...
虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据 FreeMarker不是一个Web应用框架,而适合作为Web应用框架一个组件 FreeMarker与容器无关...
Java导出Word是Java开发中常见的一项任务,特别是在企业级应用中,经常需要将数据以文档形式导出供用户下载或打印。在这个场景下,Freemarker作为一个强大的模板引擎,被广泛用于动态生成Word文档。下面我们将深入...
5. 通用数据模型:FreeMarker 不是直接反射到 Java 对象,Java 对象通过插件式对象封装,以变量方式在模板中显示。 6. 为 Web 准备:在模板语言中内建处理典型 Web 相关任务(如 HTML 转义)的结构。 7. 智能的国际...
2. **准备数据模型**:在Java代码中,创建一个对象或Map,包含将要填充到模板中的数据。 3. **处理模板**:使用Freemarker API的`Configuration`和`Template`类,将数据模型应用到模板上,生成HTML字符串。 4. **...
FreeMarker 是一个强大的模板引擎,常用于Web应用开发中的视图层,特别是在Java平台上。它与JSP、Servlet等技术配合使用,可以实现MVC(Model-View-Controller)架构中的视图部分,帮助开发者将业务逻辑与表现层分离...
这些模板定义了Word文档的结构和内容,其中的占位符(如`${variable}`)会被Java程序中的实际数据替换。XML模板允许更灵活的数据结构和格式化,适应各种复杂的Word文档生成需求。 4. **运行Test.java**: Test....