Joh*_*Doe 5 scala sbt playframework webjars playframework-2.5
在我的custom模块中的Play HTML模板中,我有以下代码行:
<script type="text/javascript" src="@controllers.core.routes.WebJarAssets.at(WebJarAssets.locate("jquery.min.js"))"></script>
Run Code Online (Sandbox Code Playgroud)
这引用了模块中的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)
Run Code Online (Sandbox Code Playgroud)
请注意,我也包含在以下行build.sbt中custom模块:
"org.webjars" %% "webjars-play" % "2.5.0",
Run Code Online (Sandbox Code Playgroud)
启动应用程序时,我收到以下错误:
[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] ^
Run Code Online (Sandbox Code Playgroud)
从早期版本中的WebJarAssets的实现来看,没有必要为此实现和注入自己的控制器(例如,参见本教程).
我究竟做错了什么?我是否需要一个WebJarAssets类(因为我在许多模块中需要web jar资产,我现在在core模块中添加了这个).此外,为什么我需要在模板中手动注入它,为什么不自动解决?
万一你想知道手动注入对我来说意味着什么:
@(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>
Run Code Online (Sandbox Code Playgroud)
之前webjars-play 2.5.0有一个静态方法可以在模板中使用.由于Play已经远离全局状态/静态方法,因此已被删除webjars-play,现在需要注入WebJarAssets.不幸的是,Twirl模板还不支持注射.因此,您必须将其注入控制器,然后将其传递给模板.以下是一个完整的示例应用程序:https://github.com/webjars/webjars-play/tree/master/test-project
| 归档时间: |
|
| 查看次数: |
2859 次 |
| 最近记录: |