我正在通过一个 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 header 是“application/json”,则返回 obj
的 JSON 表示形式,如果 Accept header 是“text/html”,则为已编译模板(在第一个参数中给出)。
最佳答案
说出您的 Scala
函数接受并返回 Object
,因此属于 Function1<Object, Object>
类型那么您的 Java 方法应该如下所示:
public Result ok(Function1<Object, Object> template, Object obj) {
// do some work, then:
return ok(template.render(obj));
}
关于java - 是否可以调用在 Java 方法中作为参数传递的 Scala 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17805699/