Как сделать 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();
}
Мой вопрос: как мне узнать, где именно эти ресурсы (в данном случае изображения) можно найти. Должен ли я положить их: а) в том же каталоге, что и интерфейс - (некрасиво)? б) в каком-то конкретном каталоге, который никогда нельзя изменить? в) в каталоге, который я хочу, но должен быть механизм для его указания - (было бы здорово)?
Спасибо.
2 ответа
Я обычно создаю новый пакет для ресурсов (com.example.project.resource
) и положи ClientBundle
Интерфейс и соответствующие ресурсы там (вместе, как в одном каталоге) - это один файл Java плюс куча изображений, нет необходимости в дальнейшем разделении, ИМХО.
Что касается путей к ресурсам - вы можете передать их через @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, то все элементы будут включены в вашу войну приложений, независимо от того, были ли они использованы.