在游戏中使用ActionBuilder创建自定义动作时使用guice

布兰克曼

使用ActionBuilder创建自定义动作时,如何使用guice?

如果将ActionBuilder从对象更改为类,似乎会抱怨“未找到:值MyAction”。

我有这个,但是不起作用:

case class MyModel(name: String, request: Request[A]) extends WrappedRequest[A](request)

class MyAction @Inject()(userService: UserService) extends ActionBuilder[MyModel] {
  def invokeBlock[A](request: Request[A], block: (MyModel[A]) => Future[SimpleResult]) = {
    val abc = loadAbc(request)
    block(new MyModel(abc, request))
  }

  def loadAbc(rh: RequestHeader): String {
    "abc" // just for testing
  }
}

因此,将其从objecta更改为aclass会导致失败,我尝试将其保留为对象,但随后无法正确编译。

我怎样才能使它正常工作?

我的控制器工作正常。

亚历克斯·瓦瑞(Alex Varju)

进行一些小的更正后,您似乎已经可以使用。您要做的就是将经过guice实例化的实例MyAction注入到控制器中,然后您可以使用该实例(而不是尝试使用MyAction类名)。

这适用于Play 2.3:

import scala.concurrent.Future
import javax.inject.{Inject, Singleton}
import play.api.mvc._

class UserService() {
  def loadAbc(rh: RequestHeader) = "abc"
}

class MyModel[A](val name: String, request: Request[A]) extends WrappedRequest[A](request)

class MyAction @Inject()(userService: UserService) extends ActionBuilder[MyModel] {
  def invokeBlock[A](request: Request[A], block: (MyModel[A]) => Future[Result]) = {
    val abc = userService.loadAbc(request)
    block(new MyModel(abc, request))
  }
}

@Singleton
class Application @Inject() (myAction: MyAction) extends Controller {
  def index = myAction { request =>
    Ok(request.name)
  }
}

您不能使用,object因为这违反了Guice的设计。object是由Scala本身实例化的单例,并且不能具有实例变量,而Guice需要能够即时实例化类,以便它可以注入依赖项。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在游戏中使用ActionBuilder创建自定义动作时使用guice

来自分类Dev

使用ActionBuilder时如何链接自定义动作

来自分类Dev

如何在联合游戏中使用非主要活动来捕获自定义网址?

来自分类Dev

使用自定义创建动作测试DRF模型时出现KeyError

来自分类Dev

在游戏中使用演员

来自分类Dev

在游戏中使用Bower

来自分类Dev

在游戏中使用Bower

来自分类Dev

如何定义在SFML游戏中使用多少CPU?

来自分类Dev

如何定义在SFML游戏中使用多少CPU?

来自分类Dev

在Sprite Kit游戏中使用相同的代码创建关卡

来自分类Dev

创建自定义网格板(如在棋盘游戏中所示)

来自分类Dev

在Java中使用注释创建自定义表单

来自分类Dev

在EWS中使用自定义属性创建约会

来自分类Dev

在Android中使用自定义类型Face创建自定义通知

来自分类Dev

如何在wxPython中使用自定义热点创建自定义光标?

来自分类Dev

如何在MVC中使用自定义路由创建自定义URL

来自分类Dev

使用带有Guice依赖项注入的JClouds创建自定义记录器

来自分类Dev

在自定义管道中使用内置管道时出错

来自分类Dev

在Django中使用自定义用户模型时的RelatedObjectDoesNotExist

来自分类Dev

在Designer中使用自定义DataGridView列时重复

来自分类Dev

在Django中使用自定义用户模型时的RelatedObjectDoesNotExist

来自分类Dev

在 ngFor 中使用自定义管道时出错

来自分类Dev

游戏中心对接会自定义邀请

来自分类Dev

使用onDraw()创建自定义视图时发生NullPointerException

来自分类Dev

使用自定义NSApplication创建NSWindow时未关闭

来自分类Dev

在安装时使用自定义顺序创建自定义插件joomla

来自分类Dev

在游戏中使用Scala模板

来自分类Dev

在游戏中使用Angular(60 fps)

来自分类Dev

在游戏中使用正确的多线程

Related 相关文章

  1. 1

    在游戏中使用ActionBuilder创建自定义动作时使用guice

  2. 2

    使用ActionBuilder时如何链接自定义动作

  3. 3

    如何在联合游戏中使用非主要活动来捕获自定义网址?

  4. 4

    使用自定义创建动作测试DRF模型时出现KeyError

  5. 5

    在游戏中使用演员

  6. 6

    在游戏中使用Bower

  7. 7

    在游戏中使用Bower

  8. 8

    如何定义在SFML游戏中使用多少CPU?

  9. 9

    如何定义在SFML游戏中使用多少CPU?

  10. 10

    在Sprite Kit游戏中使用相同的代码创建关卡

  11. 11

    创建自定义网格板(如在棋盘游戏中所示)

  12. 12

    在Java中使用注释创建自定义表单

  13. 13

    在EWS中使用自定义属性创建约会

  14. 14

    在Android中使用自定义类型Face创建自定义通知

  15. 15

    如何在wxPython中使用自定义热点创建自定义光标?

  16. 16

    如何在MVC中使用自定义路由创建自定义URL

  17. 17

    使用带有Guice依赖项注入的JClouds创建自定义记录器

  18. 18

    在自定义管道中使用内置管道时出错

  19. 19

    在Django中使用自定义用户模型时的RelatedObjectDoesNotExist

  20. 20

    在Designer中使用自定义DataGridView列时重复

  21. 21

    在Django中使用自定义用户模型时的RelatedObjectDoesNotExist

  22. 22

    在 ngFor 中使用自定义管道时出错

  23. 23

    游戏中心对接会自定义邀请

  24. 24

    使用onDraw()创建自定义视图时发生NullPointerException

  25. 25

    使用自定义NSApplication创建NSWindow时未关闭

  26. 26

    在安装时使用自定义顺序创建自定义插件joomla

  27. 27

    在游戏中使用Scala模板

  28. 28

    在游戏中使用Angular(60 fps)

  29. 29

    在游戏中使用正确的多线程

热门标签

归档