Comment ClientBundle dans GWT?
Je suis en utilisant GWT ClientBundle pour la première fois. J'ai écrit interface qui étend et voici le code:
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();
}
Ma question est: Comment puis-je savoir où exactement ces ressources (images, dans ce cas) peut être trouvé. Dois-je mettre:
a) dans le même répertoire que l'interface (moche)?
b) dans certains répertoire spécifique qui ne peut être changé ?
c) dans le répertoire que je veux, mais il devrait y avoir un mécanisme pour spécifier - (ce serait génial)?
Merci.
Vous devez vous connecter pour publier un commentaire.
J'ai l'habitude de créer un nouveau package pour les ressources (
com.example.project.resource
) et de mettre laClientBundle
interface et les ressources appropriées, y (ensemble, comme dans un répertoire) - c'est un fichier java, plus un tas d'images, pas besoin de plus de distance, à mon humble avis.Comme pour les chemins d'accès aux ressources, vous pouvez les transmettre via
@Source("path")
annotation. Par exemple, si vous avez votreClientBundle
interface danscom.example.project.resource
et des images danscom.example.project.images
, alors vous feriez écrire@Source("../images/shim.gif")
. Vous pourriez probablement utiliser des chemins absolus, mais assurez-vous de les stocker dans une variable statique et de partager entre les ressources, de sorte qu'il peut être facilement remplacé 😉Similaire à Igor points:
La clé ici est que si vous ne consomment pas de ressources (CSS/Image/Texte), le compilateur GWT va l'ignorer. Cela empêche guerre ballonnement que votre application est titulaire et que vous avez des centaines d'images et ne sont pas sûr de ce qui sont utilisés et qui ne le sont pas.
Si vous utilisez l'option de l'abandon de tout dans le public/images dossier, tous les éléments seront inclus dans votre application la guerre, peu importe si ils sont utilisés.