如何在GWT中ClientBundle?

我是第一次使用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(); } 

我的问题是:我如何确定这些资源(在这种情况下是图像)的确切位置。 我应该把它们放在:a)与接口相同的目录 – (丑陋)? b)在一些永远无法改变的特定目录中? c)在我想要的目录中,但应该有指定它的机制 – (会很棒)?

谢谢。

我通常创建一个新的资源包( com.example.project.resource )并将ClientBundle接口和相应的资源放在一起(如同在一个目录中一样) – 它是一个java文件加上一堆图像,不需要进一步分离,恕我直言。

至于资源的路径 – 您可以通过@Source("path")注释传递它们。 例如,如果您在com.example.project.resourceClientBundle接口,在com.example.project.resource图像,那么您将编写@Source("../images/shim.gif") 。 您可以使用绝对路径,但请确保将它们存储在静态变量中并在资源之间共享,以便可以轻松覆盖;)

与伊戈尔的观点相似:

 com.yoursite.resources: YourClientBundle.java com.yoursite.resources.css: YourCssResource.java com.yoursite.resources.images: image files here 

这里的关键是如果你不使用资源(CSS / Image / Text),GWT编译器将忽略它。 这可以防止战争膨胀,因为你的应用程序获得持有者,你有数百个图像,不知道哪些是使用的,哪些不是。

如果您使用在public / images文件夹中删除所有内容的选项,则无论是否使用它们,所有项目都将包含在您的应用程序中。

Interesting Posts