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

    本文作者心尖偏左。因知识本身在变化,作者也在不断学习成长,文章内容也不定时更新,为避免误导读者,方便追根溯源,请诸位转载注明出处。有问题欢迎与我讨论,共同进步。
  • 相关阅读:
    利用 PHP 导出 Git 某个分支下,新增或修改过的文件
    [翻译] 10 个实用的 Git 高级命令
    Django web project
    install virtualenv
    js原型继承
    HTML 学习杂记
    IDEA 文件列表隐藏某后缀文件
    coocsCreator杂记
    mac install brew
    c编程:输入一个数字n,则n代表n行,每行输入2个数字a,b计算每行的a+b问题。
  • 原文地址:https://www.cnblogs.com/xjpz/p/5614833.html
Copyright © 2011-2022 走看看