restlet中使用freemaker举例

本文使用restlet 2.2m3 为基础,通过freemaker的configuration的配置,从Tomcat 的class路径 /template下读取freemaker的模版信息并返回html内容。


package org.soachina.rest.component.resource;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.restlet.data.MediaType;
import org.restlet.data.Status;
import org.restlet.ext.freemarker.TemplateRepresentation;
import org.restlet.representation.Representation;
import org.restlet.resource.Get;
import org.restlet.resource.ServerResource;

import freemarker.cache.ClassTemplateLoader;
import freemarker.cache.MultiTemplateLoader;
import freemarker.cache.TemplateLoader;
import freemarker.template.Configuration;

public class GetDemoResource extends ServerResource {

@Get
public Representation getTemplate() {

String templateName = "helloworld.ftl";
TemplateRepresentation result = new TemplateRepresentation(templateName, getConfig() , MediaType.TEXT_HTML);
result.setDataModel(buildModel());
getResponse().setStatus(Status.SUCCESS_OK);
return result;
}

private Map<String, Object> buildModel() {
// Build the model
Map<String, Object> data = new HashMap<String, Object>();
data.put("message", "Hello World!");

// List parsing
List<String> countries = new ArrayList<String>();
countries.add("中国");
countries.add("United States");
countries.add("Germany");
countries.add("France");

data.put("countries", countries);
return data;
}


private Configuration getConfig() {
Configuration config = new Configuration();
ClassTemplateLoader classLoader = new ClassTemplateLoader(getClass(), "/template");
TemplateLoader[] loaders = new TemplateLoader[] { classLoader };
MultiTemplateLoader multiLoader = new MultiTemplateLoader(loaders);
config.setTemplateLoader(multiLoader);
return config;
}

}


你可能感兴趣的:(Restlet,freemaker)