[英]Freemarker - generate xml from flt template and java methods
對於Freemarker和模板引擎,我還是一個新手。 基本上,我希望能夠使用java方法將數據饋入模板來生成兩個XML文件(從兩個不同的模板)。
例如:
getRes()
方法作為值的開始和結束“ res”標簽(例如,返回1) getResult()
方法作為值(例如,返回2) 我如何寫一個類Main
來處理它而又不具體(我不想每行寫一行,因為那樣創建引擎就沒有意義了)
如果可以,請通過示例幫助我了解它的工作原理嗎?
問候
編輯所有新信息:
@fustaki這非常令人沮喪。 看來我需要逐步了解自己在做什么。 所以...這是我所在位置的一個非常愚蠢的例子:
template1.ftl
<Email>${item.getEmail()}</Email><Language>${item.getLanguage()}</Language>
FillMyTemplate1.java
public String getEmail(){ return "test@test.com" }
public String getLanguage(){ return "EN" }
我正在使用屬性文件以便使用自省:prop.properties,其中包含:template1 = fr.freemarker.test.xml.FillMyTemplate1
MainTest.java
public static void main(String[] args) throws Exception {
Properties prop = new Properties();
InputStream input = new FileInputStream("prop.properties");
prop.load(input);
Class<?> classe = Class.forName(prop.getProperty(args[0])); //where args[0] is "template1"
Configuration config=new Configuration();
config.setClassForTemplateLoading(MainTest.class, "templates");
config.setObjectWrapper(new DefaultObjectWrapper());
Template template=config.getTemplate(args[0]+".ftl");
Map<String, Object> dataModel = new HashMap<String, Object>();
Writer consoleWriter = new OutputStreamWriter(System.out);
dataModel.put("item", classe.newInstance());
template.process(dataModel, consoleWriter);
}
結果為: <Email>test@test.com</Email><Language>EN</Language>
為了理解您所說的話,我需要知道“數據提供者”在我的情況下是什么樣子? 如何在我的地圖上乘坐該“物品”? 我了解原理但不了解技術解決方案...
您的Main
流程負責生成數據( List
, Map
或其他結構化對象),並且模板將使用該數據來呈現XML。 模板中使用的標簽與其內部數據無關。
數據存儲在可以使用getItems()
檢索的List
中的示例,或者通常可以從freemarker引擎訪問的示例。
<?xml>
<res>
<#list items as item >
<item>${item}</item>
</#list>
</res>
您可以使用相同的List items
創建任意數量的模板( 視圖 )。
我希望這可以解決您的麻煩。
這是freemarker的好例子。 此應用程序使用freemarker模板生成spring mvc crud操作。 springmvcfreemarker
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.