2009-10-27 6 views
7

Actuellement, j'ai une application qui se compose d'une BasePage qui sert d'en-tête (panneau), de pied de page (panneau) et au centre du contenu de la page héritée. Le problème que je rencontre est avec ResourceReferences (Peut-être que ce n'est même pas la bonne façon). Je suis à la recherche d'une solution qui me permettra de faire ce qui suit:Ressources globalement accessibles dans l'application Wicket

  1. Avoir un seul répertoire pour les images utilisées globalement, js, css
  2. Register (ou non) ces ressources afin qu'elles puissent être accessibles à partir toutes les pages de pages ou de frères et soeurs hérités à BasePage je pourrais créer à l'avenir
  3. Permettre que ces ressources soient accessibles dans les CSS et JS (par exemple urls aux images)

jusqu'à présent, j'ai lu plusieurs exemples qui montrent comment pour regrouper des ressources pour un sco de composant ou d'application pe, mais aucun qui semble répondre aux 3 questions que je cherche de l'aide. Il est essentiel que je ne doive pas copier les images utilisées globalement (icône d'édition, logos, etc) dans chaque paquet de composant pour le référencement, et il serait bon pour des raisons de maintenance que ces liaisons soient faites globalement pour un mise à jour.

Répondre

7

Ceci a considérablement changé depuis Wicket 1.4. S'il vous plaît voir 'Adding Javascript or CSS using a Resource' in Wicket's Wiki

Pour créer des images et d'autres ressources à l'échelle mondiale accessibles (en particulier à partir des fichiers CSS et JS), les monter dans init() de vos applications Méthode:

mountSharedResource("/images/submit.jpg", new ResourceReference(MyComponent.class, "foo.jpg").getSharedResourceKey()); 

Il est absolument pas besoin de dupliquer ressources en aucune façon. La ressource n'a pas besoin d'être dans les mêmes packages que le composant lui-même. Dans nos applications, nous mettons des ressources utilisées globalement dans un paquet dédié (disons com.example.myapp.images) et y mettons une seule classe (par exemple ImagesScope.java) - même chose pour JS et CSS.

Pour les images, vous n'aurez pas besoin de ResourceReference car vous n'aurez pas besoin de ces références dans votre code (à l'exception de org.apache.wicket.markup.html.image.Image). Pour une utilisation JS et CSS

add(CSSPackageResource.getHeaderContribution(PanelOne.class, "PanelOne.css")); 

D'ailleurs, je suis l'auteur d'un little library called wicketstuff-merged-resources disponible à partir de GitHub. En utilisant cette bibliothèque, vous pouvez ignorer le montage manuel dans init() de votre application et utiliser des annotations à la place.

EDIT: mise à jour du lien. Malheureusement, la documentation dans le wiki wicketstuff semble avoir disparu maintenant. Il y a some articles on our blog cependant.

+0

le lien vers la petite bibliothèque doesent travail –

+0

Syntaxe peut varier: https://cwiki.apache.org/confluence/display/WICKET/Adding+Javascript+or+CSS+using+a+Resource – Sebas

+0

@Sebas Vous » re droit. J'ai ajouté la note au début avec votre lien. La réponse a été écrite à l'origine pour Wicket 1.4. – sfussenegger