scala – 在Play 2.5 HTML模板中自动注入WebJarAssets?
发布时间:2020-12-16 18:41:56 所属栏目:安全 来源:网络整理
导读:在我的自定义模块中的Play HTML模板中,我有以下代码行: script type="text/javascript" src="@controllers.core.routes.WebJarAssets.at(WebJarAssets.locate("jquery.min.js"))"/script 这引用了核心模块中的WebJarAssets类,如下所示: package controller
在我的自定义模块中的Play
HTML模板中,我有以下代码行:
<script type="text/javascript" src="@controllers.core.routes.WebJarAssets.at(WebJarAssets.locate("jquery.min.js"))"></script> 这引用了核心模块中的WebJarAssets类,如下所示: 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中包含以下行: "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的实现来看,没有必要为此实现和注入自己的控制器(例如,参见本tutorial). 我究竟做错了什么?我是否甚至需要一个WebJarAssets类(因为我需要在许多模块中使用web jar资产,我现在在核心模块中添加了它).此外,为什么我需要在模板中手动注入它,为什么不自动解决? 万一你想知道手动注入对我来说意味着什么: @(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中删除,现在您需要注入WebJarAssets.不幸的是,Twirl模板还不支持注射.因此,您必须将其注入控制器,然后将其传递给模板.这是一个完整的示例应用程序,它执行此操作:
https://github.com/webjars/webjars-play/tree/master/test-project
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |