Free Marker의 정거장 방식
FreeMarker의 귀속 생성 사이트 클래스
package com.uuzz.demo.template.service.impl;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.StringWriter;
import java.io.Writer;
import java.util.Iterator;
import java.util.Map;
import org.springframework.stereotype.Service;
import com.uuzz.demo.template.service.HtmlCreator;
import com.uuzz.demo.template.util.FreeMarderFactory;
import freemarker.cache.StringTemplateLoader;
import freemarker.core.TemplateElement;
import freemarker.ext.beans.StringModel;
import freemarker.template.Template;
import freemarker.template.TemplateSequenceModel;
@Service
public class HtmlCreatorImpl implements HtmlCreator {
private String homeTemplate;
private String basePath;
@Override
public String getHomeTemplate() {
return homeTemplate;
}
@Override
public void setHomeTemplate(String homeTemplate) {
this.homeTemplate = homeTemplate;
}
@Override
public String getBasePath() {
return basePath;
}
@Override
public void setBasePath(String basePath) {
this.basePath = basePath;
}
@Override
public boolean createHtmlByNameAndData(String templateName, Map dataMap) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean createHtmlByTemplateAndData(Map templateMap, Map dataMap) {
StringTemplateLoader stringTemplateLoader = (StringTemplateLoader) FreeMarderFactory.getTemplateLoader();
Iterator iterator = templateMap.keySet().iterator();
while (iterator.hasNext()) {
String key = iterator.next();
stringTemplateLoader.putTemplate(key, templateMap.get(key));
}
recuriseHtml(getHomeTemplate(), stringTemplateLoader, dataMap);
FreeMarderFactory.getConfiguration().clearTemplateCache();
iterator = templateMap.keySet().iterator();
while (iterator.hasNext()) {
String key = iterator.next();
try {
Template template = FreeMarderFactory.getConfiguration().getTemplate(key);
File afile = new File(this.getBasePath() + key);
if (!afile.exists()) {
afile.createNewFile();
}
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(afile), "UTF-8"));
template.process(dataMap, out);
} catch (Exception e) {
e.printStackTrace();
}
}
return false;
}
public void recuriseHtml(String templateName, StringTemplateLoader stringTemplateLoader, Map rootMap) {
try {
Template template = FreeMarderFactory.getConfiguration().getTemplate(templateName, "UTF-8");
TemplateSequenceModel list = template.getRootTreeNode().getChildNodes();
for (int i = 0; i < list.size(); i++) {
StringModel model = (StringModel) list.get(i);
TemplateElement element = (TemplateElement) model.getWrappedObject();
if (element.getNodeName().equals("Include")) {
String templateSource = element.getSource();
recuriseHtml(templateSource.substring(templateSource.indexOf("\"") + 2,
templateSource.lastIndexOf("\"")), stringTemplateLoader, rootMap);
}
}
StringWriter out = new StringWriter();
Map dataMap = (Map) rootMap.get(templateName);
template.process(dataMap, out);
stringTemplateLoader.putTemplate(templateName, out.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
호출 방식
Map templateMap = new HashMap();
Map dataMap = new HashMap();
QueryTestBean t = new QueryTestBean();
//
List resultList = testServiceImpl.queryPojoForList(t);
//
for (int i = 0; i < resultList.size(); i++) {
TestBean testBean = resultList.get(i);
templateMap.put(testBean.getColumn_2(), testBean.getColumn_6());
List
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.