玩! framework 2.0:如何显示多个图像?

我需要显示一个照片库。 所以这是我的模板:

@(photos: List[Photo]) @title = { Gallery } @main(title,"photo"){ 
    @for(photo <- photos) {
  • }
}

这是我的控制器方法:

 public static Result getPhotos() { return ok(views.html.photo.gallery.render(Photo.get())); } 

这是我的Photo bean:

  @Entity public class Photo extends Model { @Id public Long id; @Required public String label; public String path; public Photo(String path, String label) { this.path = path; this.label = label; } private static Finder find = new Finder( Long.class, Photo.class); public static List get() { return find.all(); } public static Photo get(Long id) { return find.byId(id); } public static void create(Photo photo) { photo.save(); } public static void delete(Long id) { find.ref(id).delete(); } } 

我把照片绝对路径放在img节点的src属性中,但不起作用。 实现这一目标的最佳方法是什么?

PS:图像位于播放应用程序之外。

看一下我非常相似的问题: 从Play目录结构外部直接提供文件 ,最后我在非常基本的示例中使用了我的第二个建议,它可以显示为:

 public static Result serve(String filepath){ // some stuff if required return ok(new File("/home/user/files/"+filepath)); } 

route(使用带*filepath星号来允许带有斜杠的字符串):

 GET /files/*filepath controllers.Application.serve(filepath : String) 

view(在photo.path之前缺少@字符不是偶然的)

 @photo.alt 

编辑:

如果您有任何HTTP server并且能够创建指向目录的新子域/别名,那么您当然不需要通过控制器提供文件。 在这种情况下,您可以将链接存储为http://pics.domain.tld/holidays_2012/1.jpg ,甚至可以更好地存储为holidays_2012/1.jpg (然后在带有子域的模板中添加前缀)。

最后你可以设置一些别名,即。 与Apache一起使用你的domain.tld/*作为Play app的指针和domain.tld/pics/*作为指向某个文件夹的指针

  ProxyPreserveHost On ServerName domain.tld ProxyPass /pics ! ProxyPass / http://127.0.0.1:9000/ ProxyPassReverse / http://127.0.0.1:9000/ Alias /pics/ /home/someuser/somefolder_with_pics/  Order allow,deny Allow from all   

在这种情况下,放置ProxyPass /pics !很重要ProxyPass /pics ! ProxyPass / http://...