Как ClientBundle в GWT?

Я впервые использую 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) в каталоге, который я хочу, но должен быть механизм, чтобы указать его - (было бы здорово)?

спасибо.

2 ответов


обычно я создаю новый пакет для ресурсов (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/Image/Text), компилятор GWT проигнорирует его. Это предотвращает наворотов войны как ваше приложение получает держатель и у вас есть сотни изображений и не уверены, какие используются, а какие нет.

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