gpt4 book ai didi

scala - 在 Play 2.5 HTML 模板中自动注入(inject) WebJarAssets?

转载 作者:行者123 更新时间:2023-12-04 17:16:58 38 4
gpt4 key购买 nike

在我的 custom 内的 Play HTML 模板中模块,我有以下代码行:

<script type="text/javascript" src="@controllers.core.routes.WebJarAssets.at(WebJarAssets.locate("jquery.min.js"))"></script>

这引用了 WebJarAssets core 中的类看起来像这样的模块:
package controllers.core

import javax.inject._
import play.api.http.HttpErrorHandler
import play.api.{Environment, Configuration}

class WebJarAssets @Inject()(errorHandler: HttpErrorHandler, configuration: Configuration, environment: Environment) extends controllers.WebJarAssets(errorHandler, configuration, environment)

请注意,我还在 build.sbt 中包含以下行在 custom模块:
"org.webjars" %% "webjars-play" % "2.5.0",

启动应用程序时,我收到以下错误:
[error] /Users/john/DemoProject/modules/custom/app/views/custom/templates/main.scala.html:36: not found: value WebJarAssets
[error] <script type="text/javascript" src="@controllers.core.routes.WebJarAssets.at(WebJarAssets.locate("jquery.min.js"))"></script>
[error] ^

从早期版本中 WebJarAssets 的实现来看,没有必要为此实现和注入(inject)自己的 Controller (例如,参见 tutorial)。

我究竟做错了什么?我什至需要 WebJarAssets这个类(因为我在许多模块中需要 web jar Assets ,所以我现在在 core 模块中添加了这个)。此外,为什么我需要在模板中手动注入(inject)它,为什么它不能自动解析?

如果您想知道手动注入(inject)对我意味着什么:
@(title: String, webJarAssets: WebJarAssets)(content: Html)(implicit messages:Messages)
<script type="text/javascript" src="@controllers.core.routes.WebJarAssets.at(webJarAssets.locate("jquery.min.js"))"></script>

最佳答案

之前 webjars-play 2.5.0您可以在模板中使用一种静态方法。由于 Play 已远离全局状态/静态方法,因此已从 webjars-play 中删除。现在你需要注入(inject) WebJarAssets .不幸的是,Twirl 模板还不支持注入(inject)。所以你必须将它注入(inject)你的 Controller ,然后将它传递给你的模板。这是一个完整的示例应用程序:https://github.com/webjars/webjars-play/tree/master/test-project

关于scala - 在 Play 2.5 HTML 模板中自动注入(inject) WebJarAssets?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37043458/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com