【问题标题】:How to ClientBundle in GWT?如何在 GWT 中使用 ClientBundle?
【发布时间】:2010-08-10 08:50:36
【问题描述】:

我是第一次使用 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)在我想要的目录中,但应该有指定它的机制 - (会很棒)?

谢谢。

【问题讨论】:

    标签: java gwt clientbundle


    【解决方案1】:

    我通常为资源创建一个新包(com.example.project.resource)并将ClientBundle接口和适当的资源放在那里(一起,就像在一个目录中)——它是一个java文件加上一堆图像,不需要为了进一步分离,恕我直言。

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

    【讨论】:

    • 无论我怎么尝试,我都得到:Resources类型中的方法synchronous()指的是缺少的类型TextResource
    • @miroslavign:请打开一个新问题,cmets 部分不是解决新问题的地方。
    【解决方案2】:

    类似于伊戈尔的观点:

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

    这里的关键是,如果您不使用资源(CSS/图像/文本),GWT 编译器将忽略它。这可以防止战争膨胀,因为您的应用程序获得了持有者,并且您有数百张图像并且不确定哪些使用了哪些没有使用。

    如果您选择将所有内容放在 public/images 文件夹中,那么所有项目都将包含在您的应用程序战争中,无论它们是否被使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-18
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      相关资源
      最近更新 更多