目的:要使用的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