mca*_*lle 3 java playframework playframework-2.0
我需要显示一个照片库.所以这是我的模板:
@(photos: List[Photo])
@title = {
  <bold>Gallery</bold>
}
@main(title,"photo"){
    <ul class="thumbnails">
    @for(photo <- photos) {
        <li class="span3">
            <a href="#" class="thumbnail">
                <img src="@photo.path" alt="">
            </a>
        </li>
    }
    </ul>
}
这是我的控制器方法:
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<Long, Photo> find = new Finder<Long, Photo>(
        Long.class, Photo.class);
public static List<Photo> 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)
观点(@之前缺乏性格photo.path不是偶然的)
<img src="@routes.Application.serve(photo.path)" alt="@photo.alt" />
编辑:
如果您有任何HTTP server能够创建指向目录的新子域/别名,您当然不需要通过控制器提供文件.在这种情况下,您可以将链接存储为http://pics.domain.tld/holidays_2012/1.jpg甚至更好holidays_2012/1.jpg(然后在带有子域的模板中作为前缀).
最后你可以设置一些别名,即.使用Apache将您的domain.tld/*指针用作Play应用程序和domain.tld/pics/*指向某个文件夹的指针
<VirtualHost *:80>
  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/
  <Directory /home/someuser/somefolder_with_pics/>
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>
在这种情况下,放置之前很重要ProxyPass  /pics !  ProxyPass / http://...
| 归档时间: | 
 | 
| 查看次数: | 2642 次 | 
| 最近记录: |