在使用Play Framework 2的Scala中,我想存储一个我稍后会渲染的模板。这是一个代码示例:
trait TraitController {
self:Controller =>
var indexTemplate = null // This is the variable I would like to
// store the template pointer.
def index() = Action {
var user :User
var context :Context
...
OK(indexTemplate(user, context))
}
object MyController extends Controller with TraitController {
indexTemplate = views.html.Index
}
路径文件中有一个类似
的条目GET /index controllers.MyController.index()
知道如何实现这一目标吗?
奖励标记:我如何找到给定字符串的模板。例: var indexTemplate:Template = Template(" views.html.Index") OK(indexTemplate(user,context))
答案 0 :(得分:1)
您可以indexTemplate
abstract def
Controller
由任何扩展它的trait TraitController {
self: Controller =>
def indexTemplate(user: User, context: Context): Html
def index() = Action {
...
Ok(indexTemplate(user, context))
}
}
object MyController extends Controller with TraitController {
def indexTemplate(user: User, context: Context): Html = views.html.Index(user, context)
}
实施:
ViewTemplates
这类似于Secure Social使用的{{1}}模式,除了它们使用整个特征来注入已实现的模板。