2010-08-10 6 views
20

J'utilise GWT ClientBundle pour la première fois. J'ai écrit interface qui étend et voici le code:Comment ClientBundle dans GWT?

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 la suivante: Comment puis-je dire où exactement ces ressources (images dans ce cas) sont disponibles. Dois-je les mettre: a) dans le même répertoire que l'interface - (moche)? b) dans un répertoire spécifique qui ne peut jamais être changé? c) dans le répertoire que je veux, mais il devrait y avoir un mécanisme pour le spécifier - (serait génial)?

Merci.

Répondre

24

Je crée généralement un nouveau paquet pour les ressources (com.example.project.resource) et mettre l'interface ClientBundle et les ressources appropriées là (ensemble, comme dans un répertoire) - c'est un fichier java plus un tas d'images, pas besoin de séparation supplémentaire , A MON HUMBLE AVIS. En ce qui concerne les chemins d'accès aux ressources, vous pouvez les transmettre via l'annotation @Source("path"). Par exemple, si vous avez votre interface ClientBundle dans com.example.project.resource et des images dans com.example.project.images, alors vous écrivez @Source("../images/shim.gif"). Vous pouvez probablement utiliser des chemins absolus, mais assurez-vous de les stocker dans une variable statique et partager parmi les ressources, il peut être facilement remplacé;)

+0

Peu importe comment j'essaie, je reçois: synchrone méthode() à partir des ressources de type fait référence au type manquant TextResource – miroslavign

+0

@miroslavign: s'il vous plaît ouvrir une nouvelle question, la section commentaires est pas la place pour le dépannage des problèmes nouveaux. –

3

semblables à des points d'Igor:

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

La clé ici est que si vous ne consommez pas une ressource (CSS/Image/Text), le compilateur GWT l'ignorera. Cela évite war bloat que votre application obtient titulaire et vous avez des centaines d'images et ne sont pas sûrs qui sont utilisés et qui ne sont pas. Si vous utilisez l'option de tout supprimer dans le dossier public/images, tous les éléments seront inclus dans votre conflit d'applications, qu'ils soient utilisés ou non.