我正在通过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和公共静态结果ok(Class template,Object obj),但是我无法在其上调用render.
可以做这样的事情吗?
如果有人知道更好的选择,那么我要实现的目标是:如果Accept标头为“ application / json”,则返回obj的JSON表示形式;如果Accept标头为“ 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));
}