2010-09-16 3 views
6

J'essaye de construire un site Web de gwt avec UIBinder. C'est cool, ça marche, mais j'ai un problème avec ui: style.GWT/UIBinder comment trouver le fichier css principal avec <ui:style>

Mon projet est mavenisé (j'utilise l'archétype gwt-maven-plugin).

Les fichiers Application.html et Application.css se trouvent dans src/main/resources/com/foo/bar/public.

La page que j'essaie de styler se trouve dans src/main/java/com/foo/bar/client/Page1.java et Page1.ui.xml.

je peux utiliser un fichier css si elle est dans le même paquet avec:

<ui:style src="Page1.css" /> 

Mais je voudrais cibler les Application.css (afin que je puisse éviter d'avoir les mêmes styles dans chaque fichier css dans chaque paquet)

J'ai essayé différents chemins relatifs, et le fichier Application.css n'est jamais trouvé.

Y a-t-il quelqu'un, là-bas, qui a eu le même problème et qui voudrait m'aider?

Merci!

+0

Je suis également intéressé. Je n'ai joué qu'avec un peu, car ce n'était pas vraiment urgent, mais je pense que j'aurai besoin d'une solution. – Strelok

Répondre

5

Si votre application css est référencée ailleurs dans un ClientBundle, vous pouvez utiliser et éviter complètement les problèmes de chemin d'accès. Voir Using an external resource.

0

Vous devriez vous demander si c'est vraiment ce que vous voulez faire. UiBinder utilise css via le mécanisme ClientBundle, qui optimise le css, masque les noms de style, puis intègre les styles dans le code javascript compilé. Si vous utilisez ensuite le même fichier css de manière traditionnelle (avec une balise <link>), vous demandez à vos utilisateurs de télécharger deux fois les mêmes règles CSS. En pratique, le décalage peut ne pas être trop visible mais en principe c'est un peu médiocre.

Dans tous les cas, cela n'est pas possible, car ClientBundle (et donc UiBinder) ne fonctionne que sur les fichiers CSS de vos dossiers sources. Comme le dit gk5885, vous pouvez créer un seul ClientBundle et l'utiliser à l'échelle du projet en l'incluant dans vos modèles UiBinder. Vous devriez envisager de déplacer autant de CSS que possible dans ce système.

1

Ancienne question, mais; J'ai simplement fait référence à un style global comme celui-ci, sans ui: directive style:

g: TabPanel ui: champ = "TabPanel" width = "100%" height = "90%" styleName = "nameInMyMainCss"

Cela équivaut à appeler setStyleName ("nameInMyMainCss"); dans la classe Java correspondante.

Questions connexes