如何在scala Play Framework 2中存储指向模板的指针?

时间:2014-11-13 21:48:25

标签: scala playframework typesafe-activator

在使用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))

1 个答案:

答案 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}}模式,除了它们使用整个特征来注入已实现的模板。