在 Freemarker 中使用动态生成的名称调用函数
Posted
技术标签:
【中文标题】在 Freemarker 中使用动态生成的名称调用函数【英文标题】:Call function with dynamically generated name in Freemarker 【发布时间】:2016-08-02 00:54:44 【问题描述】:我能否从 Java 对象中调用从几个字符串生成名称的函数?在我的示例中,它是一个简单的吸气剂。只是好奇。
Process 是这样的 Java 对象:
public class Process
private int number = 0;
public int getNumber()
return this.number;
public String getPropertyName()
return "number";
假设我们将 Process 对象作为变量 process 传递给 freemarker 模板,如下所示:
return 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 模板中解释为存储在方法中的值。
你怎么看,有没有办法做到这一点?
【问题讨论】:
【参考方案1】:如果你只想动态访问一个字段,那么你可以这样写:
<input name="$process.propertyName" type="number" value="$process[process.propertyName]"/>
但是如果你真的想调用方法,那么你可以试试eval
:
<input name="$process.getPropertyName()" type="number" value="$methodName?eval"/>
【讨论】:
谢谢,就是这样!也许自己找到解决方案为时已晚;)以上是关于在 Freemarker 中使用动态生成的名称调用函数的主要内容,如果未能解决你的问题,请参考以下文章
Freemarker在Java中的使用(动态生成多条数据及多张图片)
在 Freemarker 模板中,如何获取数据模型类的名称?