- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在使用 ActionBuilder 创建自定义 Action 时如何使用 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
}
}
因此将它从 object
更改为 class
会导致它失败,我尝试将它保留为一个对象,但它无法正确编译。
我怎样才能让它发挥作用?
我让它在我的 Controller 中工作得很好。
最佳答案
通过一些小的更正,您所得到的似乎已经可以工作了。您所要做的就是将 MyAction
的 guice 实例化实例注入(inject)您的 Controller ,然后您可以使用该实例(而不是尝试使用 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 需要能够动态实例化类,以便它可以注入(inject)依赖项。
关于scala - 在游戏中使用 ActionBuilder 创建自定义 Action 时使用 guice,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23965449/
我似乎无法让 actionbuilder 在 selenium webdriver 中工作。我正在尝试使使用 Javascript 的菜单自动化。我需要将鼠标悬停然后移动并单击鼠标悬停后出现的链接。
我正在尝试构建一个简单的操作以在 Play Controller 中使用来检查 session 是否处于事件状态: import play.api.mvc._ import scala.concurr
我最近创建了一个 ActionBuilder,它根据请求本身发送的“授权” token 在请求中插入一个用户。我已经能够通过使用将其拆分为一个特征(即正在测试的元素)和一个对象的技术成功地对其进行单元
在使用 ActionBuilder 创建自定义 Action 时如何使用 guice? 如果我将 ActionBuilder 从对象更改为类,它似乎会提示“未找到:值 MyAction”。 我有这个,
我想为以下 Controller 编写测试。 class DashboardController @Inject()(cc: ControllerComponents,
当我尝试 WSO2 Identity Server 的快速入门指南时。 场景 1 - 使用 SAML2 配置单点登录 生成http://localhost.com:8080/saml2-web-app
我是一名优秀的程序员,十分优秀!