我是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>
任何帮助都将非常感激。
答案 0 :(得分:0)
employee?keys
应该为您提供JavaBeans属性名称,如果您将FM设置为不公开方法...或者如果确实如此,您可以使用employee[propertyName]?is_method
来过滤掉它们。您可以使用employee[propertyName]
来读取属性值。
但是,我对于一般地自动完成这些事情感到悲观。总会有一些属性太技术化而无法打印(比如只有初学者的class
),它有一些有趣的类型,FreeMarker无法正确转换为字符串或者根本就没有...如果这种功能在您的项目中真正重要的是,您可能希望使用注释标记这些属性,然后编写TemplatMethodModelEx
来提供名称(以及正确格式化所需的其他属性等),或者可能是自定义{{1}出于同样的目的。