检查<img src="@routes.Assets.at(" public="" images",="" "logo.png")"=""/>是否存在图像

时间:2013-09-04 04:35:28

标签: playframework playframework-2.0

在playframework中加载图片我正在使用@ routes.Assets.at

喜欢

但我想仅在此logo.png可用时加载此图像。 因为在没有图像的情况下,它显示空的图像空间。

是否有像

这样的语法

@ routes.Assets.at(“public / images”,“logo.png”)。getorelse()种类..但返回类型不是类型选项。

1 个答案:

答案 0 :(得分:4)

我怀疑你的方法是正确的,因为图像需要宽度,高度和alt属性。如果您有这些数据,您应该已经知道图像存在。

您可以创建模板img.scala.html:

@(path: String, width: Int, height: Int, alt: String = "")

@import play.api.Play.resource
@import play.api.Play.current

@if(resource("public/" + path).isDefined) {
    <img src="@routes.Assets.at(path)" width="@width" height="@height" alt="@alt"/>
}

并以这种方式使用它:

<hr>
@img("images/favicon.png", 16, 16, "play framework logo")
<hr>
@img("images/not-existing.png", 16, 16, "foo bar")
<hr>

所以它会导致:

<hr>
<img src="/assets/images/favicon.png" width="16" height="16" alt="play framework logo"/>
<hr>
<hr>

项目:https://github.com/schleichardt/stackoverflow-answers/tree/so18605473