我能从Java Object调用一个从几个字符串生成名称的函数吗?在我的例子中,它是一个简单的吸气剂。好奇。
Process是一个像这样的Java对象:
public class Process {
private int number = 0;
public int getNumber() {
return this.number;
}
public String getPropertyName() {
return "number";
}
}
假设我们将Process对象作为变量进程传递给freemarker模板,其中包含以下内容:
返回Results.html()。render(" process",new Process());
现在我们有一个包含以下代码的html页面。我想到的方法应该做这样的例子(示例不起作用!):
<#assign methodName = "process.get" + process.getPropertyName()?cap_first + "()">
<input name="${process.getPropertyName()}" type="number" value="${methodName}"/>
在html中解释的结果是:
<input name="number" type="number" value="process.getNumber()"/>
但它只是一个字符串,并且它不会在freemarker模板中解释为存储在方法中的值。
你怎么看?有没有办法实现这个目标?
答案 0 :(得分:1)
如果您只想动态访问某个字段,那么您可以这样写:
<input name="${process.propertyName}" type="number" value="${process[process.propertyName]}"/>
但是如果你真的想调用方法,那么你可以试试eval
:
<input name="${process.getPropertyName()}" type="number" value="${methodName?eval}"/>