Freemarker:基于对象字段动态生成内容

时间:2013-12-05 14:36:43

标签: java freemarker

我是Freemarker的新手。我想在FTL中动态生成内容,以便它显示对象中的所有字段。在Java中,我们可以通过反思实现这一目标。在Free marker中不确定。

示例:

class Employee{
String name;
String age;

//setter and getter methods
}

class Organization{
String orgName;
String location;

//setter and getter methods.
}

我想编写常见的ftl文件,它将显示所有对象字段,而不管数据类型。

我不想写如下。我希望它是通用的。

<td><div>${employee.name!}</div></td>
<td><div>${employee.age!}</div></td>

任何帮助都将非常感激。

1 个答案:

答案 0 :(得分:0)

employee?keys应该为您提供JavaBeans属性名称,如果您将FM设置为不公开方法...或者如果确实如此,您可以使用employee[propertyName]?is_method来过滤掉它们。您可以使用employee[propertyName]来读取属性值。

但是,我对于一般地自动完成这些事情感到悲观。总会有一些属性太技术化而无法打印(比如只有初学者的class),它有一些有趣的类型,FreeMarker无法正确转换为字符串或者根本就没有...如果这种功能在您的项目中真正重要的是,您可能希望使用注释标记这些属性,然后编写TemplatMethodModelEx来提供名称(以及正确格式化所需的其他属性等),或者可能是自定义{{1}出于同样的目的。