java - Freemarker 中的继承/实例检查

标签 java templates freemarker

我的用例是为用户提供在模板引擎的帮助下创建报告的可能性。因此,我提取了数据模型的相关部分并将 Freemarker 作为模板引擎集成。 到目前为止效果很好,但现在我的数据模型包含某些位置的继承 - 但 Freemarker 似乎不支持 instanceof 操作?如何处理这个问题?模型中是否还有其他支持继承的模板引擎?

虚构的例子:

我有 2 个类“Car”和“Bike”,它们扩展了“Vehicle”。该模型包含一个包含车辆列表的“车队”类。用户希望(在模板的帮助下)遍历列表并在汽车的情况下写入属性“countSeats”,在自行车的情况下写入属性“frame size”。如何使用 Freemarker 实现这一点?可以在任何模板引擎中完成吗?

非常感谢!

//编辑:不幸的是,由于列表中车辆的顺序(在上面的示例中)是必不可少的,因此无法将列表与父类(super class)拆分为多个具有“具体”对象的列表。

最佳答案

丑陋的解决方案

            <#if yourObject.class.simpleName == "Simple class name like String">
                something
            </#if>                     

            <#if yourObject.class.simpleName == "other simple class name">
                do something else
            </#if>  `

关于java - Freemarker 中的继承/实例检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30416693/

相关文章:

java - 两个客户端与服务器java套接字通信并交换消息

java - 更改 java 符号链接(symbolic link)

java - 正则表达式 java : how to replace a string in a generic between the start tag and end tag of a generic

javascript - 如何在 Javascript 中使用 HTML 中的模板列表?

c++ - 调用unique_ptr子类继承的模板构造函数

java - 在jaxb中转换xs :string to java. util.UUID

c++ - 函数模板重载(不同的返回值类型)

java - 如何基于一个 Freemarker 模板创建多个文件

hashmap - freemarker ,更新 hashmap 的方法

Liferay Freemarker : how to get Request object in template?