我正在通过Java项目使用Play框架,我想将我的模板(Scala函数)作为参数传递给我的一个Java方法。
我想做这样的事情:
public static Result ok(ScalaFunction template, Object obj) {
// do some work, then :
return ok(template.render(obj));
}
MyClass.ok(views.html.mytemplate, SomeModel.find.findList());
当然,这不起作用。我认为views.html.mytemplate
是一个类,所以我在方法中切换到views.html.mytemplate.class
和public static Result ok(Class template, Object obj)
,但我无法在其上调用render
。
是否可以做这样的事情?
如果有人知道更好的替代方案,那么我想要实现的是,如果Accept标头是“ application / json ”,则返回obj
的JSON表示,或者编译如果Accept标头是“ text / html ”,则模板(在第一个参数中给出)。
答案 0 :(得分:4)
假设您的Scala
函数接受并返回Object
,因此类型为Function1<Object, Object>
,那么您的Java方法应该如下所示:
public Result ok(Function1<Object, Object> template, Object obj) {
// do some work, then:
return ok(template.render(obj));
}