首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用FMPP时,有没有办法定义数据模型的方法?

在使用FMPP时,有没有办法定义数据模型的方法?
EN

Stack Overflow用户
提问于 2019-05-09 22:48:53
回答 1查看 30关注 0票数 0

我想将方法添加到我的数据模型中,因此我需要一种方法来在我的tdd数据文件中指定它们。例如,具有包含两个标量的tdd数据文件:

代码语言:javascript
复制
a: 1
b: 1 

我想添加一个将它们相乘的方法area。这是可能的吗?如果可能,我该如何实现?

EN

回答 1

Stack Overflow用户

发布于 2019-05-12 03:02:48

因此,假设您有一个具有foo()bar()方法的MyUtils,并且您希望在模板中访问这些方法。

您可以使用data中的eval数据加载器(如myUtils: eval('new com.example.MyUtils()') )向模型中添加任意Java对象。然后,您可以在模板中发出myUtils.foo()。但是,您希望在顶层添加方法。这也是可能的。无论是在eval中还是在自定义DataLoader (无论您想使用哪个)中,您都可以访问engine,即fmpp.Engine对象。然后你就可以使用这个技巧了:

代码语言:javascript
复制
// Note: In case you are using eval, use Java 1.2 syntax (no generics).
TemplateHashModel myUtilsModel = (TemplateHashModel) engine.wrap(new MyUtils());
Map<String, TemplateModel> myUtilsMethodModels = new HashMap<>();
myUtilsMethodModels.put("foo", myUtilsModel.get("foo"));
myUtilsMethodModels.put("bar", myUtilsModel.get("bar"));
return myUtilsMethodModels;

然后将该Map添加到不带名称的data中。(如果将没有名称的Map添加到data,则其键将成为顶级变量。)

当然,它可以改进得更好,比如自动查找你想要的方法,等等。另外,我没有尝试过上面的方法(所以可能会有打字错误)。但这是基本的想法。(我想如果FMPP有一个数据加载器来加载类的静态方法,那么它将是实用的……但是,目前它还没有这样的功能。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56062083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档