Как сделать ClientBundle в GWT? - PullRequest
       8

Как сделать ClientBundle в GWT?

20 голосов
/ 10 августа 2010

Я впервые использую 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();
}

Мой вопрос: как мне узнать, где именно эти ресурсы (изображения в данном случае) могут быть найдены.Должен ли я поместить их: а) в ту же директорию, что и интерфейс - (некрасиво)?б) в каком-то конкретном каталоге, который никогда нельзя изменить?в) в каталоге, который я хочу, но должен быть механизм для его указания - (было бы здорово)?

Спасибо.

Ответы [ 2 ]

24 голосов
/ 10 августа 2010

Я обычно создаю новый пакет для ресурсов (com.example.project.resource) и помещаю туда интерфейс ClientBundle и соответствующие ресурсы (вместе, как в одном каталоге) - это один файл Java плюс куча изображений, нет необходимости для дальнейшего расставания, ИМХО.

Что касается путей к ресурсам - вы можете передать их с помощью @Source("path") аннотации. Например, если у вас есть ClientBundle интерфейс в com.example.project.resource и изображения в com.example.project.images, вы должны написать @Source("../images/shim.gif"). Возможно, вы могли бы использовать абсолютные пути, но убедитесь, что вы храните их в статической переменной и делитесь между ресурсами, чтобы их можно было легко переопределить;)

3 голосов
/ 06 марта 2013

Аналогично очкам Игоря:

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

Ключевым моментом здесь является то, что если вы не используете ресурс (CSS / Image / Text), компилятор GWT его проигнорирует. Это предотвращает боевое раздувание , поскольку ваше приложение получает держатель, и у вас есть сотни изображений, и вы не уверены, какие из них используются, а какие нет.

Если вы используете опцию отбрасывания всего в папку public / images , то все элементы будут включены в войну приложений независимо от того, используются ли они.

...