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

freemarker 定义模板layout

阅读更多

 

定义下面类, 会在以后模板中使用到

package com.vogella.freemarker.first;

public class ValueExampleObject {

  private String name;
  private String developer;

  public ValueExampleObject(String name, String developer) {
    this.name = name;
    this.developer = developer;
  }

  public String getName() {
    return name;
  }

  public String getDeveloper() {
    return developer;
  }

} 

 

 

package com.vogella.freemarker.first;

import java.io.File;
import java.io.FileWriter;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;

import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateExceptionHandler;
import freemarker.template.Version;

public class MainTest {

  public static void main(String[] args) throws Exception {

    // 1. Configure FreeMarker
    //
    // You should do this ONLY ONCE, when your application starts,
    // then reuse the same Configuration object elsewhere.
    
    Configuration cfg = new Configuration();
    
    // Where do we load the templates from:
    cfg.setClassForTemplateLoading(MainTest.class, "templates");
    
    // Some other recommended settings:
    cfg.setIncompatibleImprovements(new Version(2, 3, 20));
    cfg.setDefaultEncoding("UTF-8");
    cfg.setLocale(Locale.US);
    cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);

    // 2. Proccess template(s)
    //
    // You will do this for several times in typical applications.
    
    // 2.1. Prepare the template input:
    
    Map<String, Object> input = new HashMap<String, Object>();
    
    input.put("title", "Vogella example");

    input.put("exampleObject", new ValueExampleObject("Java object", "me"));
    
    List<ValueExampleObject> systems = new ArrayList<ValueExampleObject>();
    systems.add(new ValueExampleObject("Android", "Google"));
    systems.add(new ValueExampleObject("iOS States", "Apple"));
    systems.add(new ValueExampleObject("Ubuntu", "Canonical"));
    systems.add(new ValueExampleObject("Windows7", "Microsoft"));
    input.put("systems", systems);
    
    // 2.2. Get the template

    Template template = cfg.getTemplate("helloworld.ftl");
      
    // 2.3. Generate the output

    // Write output to the console
    Writer consoleWriter = new OutputStreamWriter(System.out);
    template.process(input, consoleWriter);

    // For the sake of example, also write output into a file:
    Writer fileWriter = new FileWriter(new File("output.html"));
    try {
      template.process(input, fileWriter);
    } finally {
      fileWriter.close();
    }

  }
} 

 

 

定义layout--utils.ftl

 

<#macro page>
  <html>
  <head>
    <title>${title}</title>
  </head>
  <body>
    <h1>${title}</h1>
  
    <#-- This processes the enclosed content:  -->
    <#nested>
  </body>
  </html>
</#macro>

<#macro otherExample p1 p2>
  <p>The parameters were: ${p1}, ${p2}</p>
</#macro> 

 

 

创建helloworld.ftl 调用模板 layout--utils.ftl

 

<#import "lib/utils.ftl" as u> 

<@u.page>
  <p>${exampleObject.name} by ${exampleObject.developer}</p>

  <ul>
    <#list systems as system>
      <li>${system_index + 1}. ${system.name} from ${system.developer}</li>
    </#list>
  </ul>
  
  <#-- Just another example of using a macro: -->
  <@u.otherExample p1=11 p2=22 />
</@u.page> 

 

 

http://laravel.iteye.com/

1
4
分享到:
评论

相关推荐

    Spring MVC + Tiles + FreeMarker 的整合

    通过定义模板,我们可以创建可重用的布局,如头部、底部和侧边栏,然后在各个页面中插入具体的内容。这样不仅可以提高开发效率,还能保持页面设计的一致性。 **FreeMarker** FreeMarker是一个模板语言,它与Java...

    freeMarker例子

    在实际应用中,FreeMarker需要在Web应用程序的配置文件(如web.xml)中进行配置,定义FreeMarker的路径、缓存策略等。同时,需要在Servlet中创建`Template`对象,并用`Configuration`对象加载模板文件,以便于渲染...

    struts2-layout

    Struts2-layout则是对这一核心功能的补充,它专注于视图部分的管理,通过预定义的布局模板,简化了页面布局的复杂性。 在Struts2中,Action类处理业务逻辑,而视图由JSP页面或FreeMarker模板等技术负责渲染。Struts...

    PDF生产方案 maven + freemarker + flyingSoaser 实现 附代码

    在这个方案中,`pdfGenerate.ftl`是一个FreeMarker模板文件,用于定义PDF的布局和内容。例如,它可能包含如下的模板语法: ```html &lt;!DOCTYPE html&gt; &lt;title&gt;PDF报告 ${reportTitle} ${content} ``` ...

    beetl模板语音教学

    - **用途**: 定义模板中的属性映射。 **10. 标签** - **示例**: `&lt;#myTag param="value"&gt;...&lt;/#myTag&gt;` - **用途**: 定义自定义的标签。 **11. 宏** - **示例**: `&lt;#macro myMacro param&gt; ... &lt;/#macro&gt;` - **用途...

    Structs2.0框架搭建代码

    Structs2的核心概念包括Action、Interceptor(拦截器)、Layout(布局)和Freemarker模板引擎等。Action是处理用户请求的核心组件,它接收请求,处理业务逻辑,并返回结果。Interceptor则允许在Action执行前后插入...

    Beetl java模板引擎.zip

    Beetl模板引擎是由中国的开源社区开发,它在设计上吸取了其他模板引擎的优点,如FreeMarker、Velocity等,并在性能、易用性、功能全面性等方面有所提升。Beetl支持丰富的语法结构,包括表达式、控制语句、函数、...

    Tiles框架.rar

    这些tiles可以是静态HTML,也可以是动态生成的内容,如JSP、FreeMarker或Velocity模板。 在Tiles框架中,我们首先定义布局模板,这些模板描述了网页的整体结构,然后将具体的页面内容插入到模板的各个位置。布局...

    d.view.layout:负责布置视图和渲染组件的模块

    主题主题是整个网站的外观和感觉,通常主题是以下各项的容器: template :或主站点的模板,定义站点的主要外观,并在模板级别添加脚本,模板定义: 模板脚本:使用模板语言(目前为freemarker)对主要网站HTML结构...

    Struts-2.1.6整合Tiles2全攻略

    - **提高开发效率**:通过定义模板,可以减少重复编码的工作量,使开发者能够更加专注于业务逻辑的编写。 - **增强代码的可维护性**:当网站需要整体风格调整时,只需要修改模板文件即可,无需逐个修改每个页面,极...

    Beetl模板引擎-其他

    独特功能:Beetl有些功能是发展了10多年的模板引擎所不具备的,这些功能非常利于模板的开发和维护,如下:1、自定义占位符和控制语句起始符号,这有利于减小模板语法对模板的倾入性,比如在html模板中,如果定义控制...

    Spring mvc3 tiles

    例如,我们可以定义一个Tiles模板`baseLayout`,包含头部、主体和底部三个部分。然后在Controller中,针对不同的请求返回不同的内容填充主体部分。 ```xml &lt;!-- tiles-defs.xml --&gt; &lt;definition name="baseLayout...

    sitemesh简单demo

    除了基础功能,sitemesh 还提供了很多高级特性,如:自定义装饰器选择策略、页面属性传递、支持 Velocity 和 FreeMarker 等模板引擎等。这些特性使得 sitemesh 能够适应更复杂的项目需求。 通过这个“sitemesh简单...

    01_springmvc基础_3

    - **视图(View)**:负责展示数据,通常使用 JSP、Thymeleaf 或 FreeMarker 等模板引擎来呈现。 - **控制器(Controller)**:作为模型和视图之间的桥梁,接收用户请求,处理并转发到相应的模型,最后决定返回...

    thymeleaf的th标签

    Thymeleaf 的 th 标签大全 ...Thymeleaf 的 th 标签提供了多种方式来控制模板的输出,包括文本替换、属性设置、事件绑定、条件判断、循环输出、代码片段定义等。这些标签可以帮助开发者快速生成动态的 Web 应用程序。

    纯净版SpringMVC+Ibatis+log4j环境

    4. **View**:视图负责渲染结果,可以通过JSP、FreeMarker等模板引擎实现。 5. **视图解析器**:如InternalResourceViewResolver,将逻辑视图名转换为实际资源路径。 6. **依赖注入**:SpringMVC利用Spring框架的DI...

    liferay教程

    开发者可以通过编写Java Portlets、JSR-286 Portlets或者Freemarker模板来扩展功能。同时,Liferay提供了服务建模工具,可以方便地生成服务API,简化开发过程。对于前端界面,Liferay支持AngularJS、React等现代前端...

    Liferay插件方式开发详解.docx

    Liferay提供了基于FreeMarker和CSS的主题模板,开发者可以通过修改这些模板来创建自己的定制主题。 在开发过程中,你可能需要配置Liferay以连接到不同的数据库,例如MySQL。在Apache Tomcat的`conf/Catalina/...

Global site tag (gtag.js) - Google Analytics