zoukankan      html  css  js  c++  java
  • 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

    本文作者心尖偏左。因知识本身在变化,作者也在不断学习成长,文章内容也不定时更新,为避免误导读者,方便追根溯源,请诸位转载注明出处。有问题欢迎与我讨论,共同进步。
  • 相关阅读:
    [2019 CSP-S赛前集训] [CF1037D] Valid BFS?
    [2019 CSP-S赛前集训] [洛谷P1613] 跑路
    [2019 CSP-S赛前集训] [洛谷P1967] 货车运输
    [洛谷博客] 我的洛谷博客内容搬运
    终于开通了博客
    Qt Creator 添加arm版本的qmake时的问题
    U盘挂载问题
    段错误解决办法
    printf %m
    使用pthread_create()创建线程
  • 原文地址:https://www.cnblogs.com/xjpz/p/5614833.html
Copyright © 2011-2022 走看看