题
我使用GWT ClientBundle首次。我写延伸,并在这里是代码接口:
package edu.etf.fuzzy.client.login;
import com.google.gwt.resources.client.ClientBundle;
import com.google.gwt.resources.client.ImageResource;
public interface Resources extends ClientBundle {
@Source("logo_federacija.jpg")
ImageResource logo();
@Source("shim.gif")
ImageResource shim();
}
我的问题是:我怎么知道究竟在何处,这些资源(在这种情况下,图像)都可以找到。我应该把它们: 一)在同一目录界面 - (丑陋的)? B)在一些特定的目录中,从来没有可以改变? C)在目录中,我想,但应该有机制,指定它 - (将是巨大的)
?感谢您。
解决方案
我通常创建的资源的新的包(com.example.project.resource
)并把ClientBundle
接口和相应的资源有(一起,如在一个目录) - 它是一个Java文件再加上一堆图像,无需进一步分离, IMHO。
至于路径的资源 - 你可以通过@Source("path")
注释传递它们。例如,如果你有ClientBundle
和图像com.example.project.resource
你com.example.project.images
接口,那么你会写@Source("../images/shim.gif")
。你也许可以使用绝对路径,但要确保你将它们存储在一个静态变量和共享之间的资源,所以它可以很容易地覆盖;)
其他提示
要伊戈尔的点类似的:
com.yoursite.resources: YourClientBundle.java
com.yoursite.resources.css: YourCssResource.java
com.yoursite.resources.images: image files here
这里的关键是,如果你不消耗资源(CSS /图像/文本),GWT编译器会忽略它。这可以防止的战争膨胀的为您的应用程序获得持有人,你已经有了数百张照片,并不能确定其使用的,哪些不是。
如果您使用在公共/图像放弃所有的选项的文件夹,然后将所有的项目将包括在应用程序的战争,无论它们是否正在使用。
不隶属于 StackOverflow