目的:要使用的Freemarker生成以下形式插入列表項作爲屬性?
public void save(){
helper.save();
}
public void load(){
helper.load();
}
//Other such lifecycle methods
的Java代碼基本上,我有一個「生命週期」方法名了一把,我想爲每一個他們的代碼。但是,如果傳入的模型對象需要它,我只會生成一個方法。我的模型類的樣子:
public class Model{
private boolean load;
private boolean save;
//bools for other lifecycle methods
public Model(boolean load, boolean save){
this.load = load;
this.save = save;
}
public boolean getLoad(){
return load;
}
public boolean getSave(){
return save;
}
}
我Freemarker模板:
<#assign methodNames = ["load", "save"]>
<#list methodNames as method>
<#if model.method>
public void ${method}(){
helper.${method}();
}
</#if>
</#list>
然而,<#if>
聲明不起作用。 Freemarker抱怨model.method
是null
。它看起來像Freemarker在我的模型中尋找getMethod()
,而不是將model
解析爲save
或load
,然後查找getSave()
或getLoad()
。
我嘗試以下,但在所有情況下的Freemarker抱怨一個語法錯誤或其它:
<#assign methodNames = ["load", "save"]>
<#list methodNames as method>
<#assign methodRequired = r"model.${method}">
<#if <@methodRequired?interpret>>
public void ${method}(){
helper.${method}();
}
</#if>
</#list>
這失敗,出現錯誤,說我不能有<@methodRequired>
的<#if>
內。我也直接嘗試<#if model.${method}>
但這顯然不起作用。
爲了完整起見,這裏是我如何調用模板:
//Obtain a writer object first. Then ...
Model model = new Model(true, false);
myTemplate.process(model, writer);
writer.close();
所以,問題是 - 我怎麼問的Freemarker給我一個列表變量的值從裏面另一個模型對象?
這樣做。我所要做的就是在'if'條件中使用這個語法:'<#if model [method]>' – curioustechizen 2014-10-30 07:31:25