播放中的静态资产 java

Static assets in play java

我在数据库中有保存路径,当我在视图中使用它时

@for(photo <- photos){
        <img src="@routes.Assets.versioned("images/photo.getPath()")" class="img-rounded" alt="Cinque Terre" width="304" height="236">
 }

photo.getPath() 不工作,我尝试 @photo.getPath() 仍然不工作。任何建议给我。我使用 play-java 2.5 版。非常感谢。

就我个人而言,我发现 Twirl 语法有点不直观。 @ 标记 scala 语句的开始。该语句的长度是自动确定的。

现在查看 img 标签:

<img src="@routes.Assets.versioned("images/photo.getPath()")" class="img-rounded" alt="Cinque Terre" width="304" height="236">

应将以下代码段标识为单个语句:

routes.Assets.versioned("images/photo.getPath()")

从 Scala 的角度来看,"images/photo.getPath()" 只是一个 String。它不会在 photo 对象上执行任何方法。我认为(我没有对此进行测试)您的问题应该可以通过将这部分替换为 s"images/${photo.getPath()}" 来解决。请注意 string interpolation 将确保调用 photo 对象上的方法。

这将使您的示例看起来像:

@for(photo <- photos) {
    <img src="@routes.Assets.versioned(s"images/${photo.getPath()}")" class="img-rounded" alt="Cinque Terre" width="304" height="236">
}