要在Play 2.7中使用WebJarsUtil,你需要遵循以下步骤:
- 在
build.sbt
文件中添加对WebJars Play库的依赖:
libraryDependencies += "org.webjars" %% "webjars-play" % "2.8.0"
- 在
routes
文件中添加对WebJars的路由定义。例如,你可以在文件的开头添加以下行:
GET /webjars/*file controllers.WebJarAssets.at(file)
- 在
app/controllers
目录下创建一个名为WebJarAssets.scala
的新文件。在该文件中,你可以使用WebJarsUtil
来管理WebJars资源的访问。
package controllers
import javax.inject.Inject
import org.webjars.play.WebJarsUtil
import play.api.mvc._
class WebJarAssets @Inject()(webJarsUtil: WebJarsUtil, cc: ControllerComponents) extends AbstractController(cc) {
def at(file: String): Action[AnyContent] = {
val path = "/META-INF/resources/webjars/" + file
webJarsUtil.locate(path) match {
case Some(url) => Assets.Redirect(url)
case None => NotFound
}
}
}
在上面的代码中,我们注入了WebJarsUtil
和ControllerComponents
,并创建了一个at
方法来处理WebJars资源的请求。在该方法中,我们首先构建资源的路径,然后使用webJarsUtil.locate
方法来查找资源的URL。如果URL存在,我们将使用Assets.Redirect
将请求重定向到URL;如果URL不存在,我们将返回NotFound
。
- 在你的控制器中使用
WebJarAssets
。例如,你可以在HomeController
中注入WebJarAssets
并使用它来获取WebJars资源的URL:
package controllers
import javax.inject._
import play.api.mvc._
import org.webjars.play.WebJarsUtil
@Singleton
class HomeController @Inject()(webJarAssets: WebJarAssets, cc: ControllerComponents) extends AbstractController(cc) {
def index(): Action[AnyContent] = Action { implicit request =>
val jqueryUrl = webJarAssets.at("jquery.min.js").url
Ok(views.html.index(jqueryUrl))
}
}
在上面的代码中,我们注入了WebJarAssets
并在index
方法中使用它来获取jquery.min.js
的URL。然后我们将URL传递给视图模板,并以参数的形式传递给视图。
现在你可以在Play 2.7中使用WebJarsUtil来管理和访问WebJars资源了。