有解决方法。
问题在于CSS文件是静态的,因此Play!不会对它们做任何处理 - 除了将它们提供给客户端。
只需将您的CSS文件转换为视图,编写一个通用控制器,以文件名作为参数,它们将被作为Play!模板提供。
大概像这样(注意:伪代码!):
路由:
get /css/{filename} Application.getCSS
控制器
class public void getCSS(filename)
{
renderTemplate(filename);
}
然后在您的css中,您可以使用任何您想要的优美模板功能。
安装路径可用作conf中的http.path
但这样会非常低效,因此您需要添加nginx或类似的前端以进行一些缓存,并为这些文件设置较高的过期值。
我不确定这是否值得做,仅仅是为了避免相对路径!
我确实认为相对路径更适合通用部署,并且使用此动态绝对方法更容易出现问题。
更好的整体部署策略
另一个重要的问题是,如果您喜欢绝对URL,那么没有问题。
我也是。
但当我部署我的Web应用程序(无论是play!、django、纯wsgi还是其他任何东西)时,我总是放置一个Web前端。
通常使用nginx。
这意味着您的play框架将是一个上游服务器,您可以在80端口上使用URL执行所有操作-并使用子域或子文件夹管理多个服务...
但是当您访问play应用程序时,它们自己的端口上的所有内容都是绝对的。
最后,如果您将Play!部署为war文件,我会觉得您选择了错误的框架或错误的部署模式!但是,您的jboss或其他应用程序Web服务器将对子文件夹进行一些魔法...