• Play Framework 模板里使用注入访问数据层


    从Play2.4开始,推荐使用依赖注入替代静态控制器。因此我们不能像play2.3那样,在模板里直接调用object访问数据层。是的,我们还是可以使用常规方式,通过传参到模板里。不过这样很多时候不方便,比如当参数很多得时候,写起来麻烦,写出来的代码也很不好看。所以我就像在模板里直接访问数据层。

    其实实现起来也很简单,定义数据层那就不说了。创建 MessageServices 调用数据层:

    class MessageServices @Inject()(messages: Messages) {
        def retrieve(id:Long) = Await.result(messages.retrieve(id),Duration.Inf)
    }
    

    创建ViewAccessPoint 方便模板调用:

    object ViewAccessPoint {
        private val myDaoCache = Application.instanceCache[MessageServices]
    
        object Implicits {
            implicit def myDao(implicit application: Application): MessageServices = myDaoCache(application)
        }
    }
    

    Html模板:

    @import services.ViewAccessPoint.Implicits._
    @import play.api.Play.current
    @(id:Long)
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Title</title>
    </head>
    <body>
    
      <p>
          @defining(myDao.retrieve(id)){ mood =>
            @mood.get.content
          }
      </p>
    
    </body>
    </html>
    

    源码:https://github.com/xjpz/play-view

    本文作者心尖偏左。因知识本身在变化,作者也在不断学习成长,文章内容也不定时更新,为避免误导读者,方便追根溯源,请诸位转载注明出处。有问题欢迎与我讨论,共同进步。
  • 相关阅读:
    iOS9下App Store新应用提审攻略
    信息安全系统设计基础第十一周学习总结
    Linux第十一次学习笔记
    信息安全系统设计基础第十周学习总结
    Linux第八次学习笔记
    Linux第七次实验笔记
    家庭作业3.67
    Linux第六次学习笔记
    Linux第五次学习笔记
    Linux第四次学习笔记
  • 原文地址:https://www.cnblogs.com/xjpz/p/5614833.html
Copyright © 2020-2023  润新知