Question

Actuellement, j'ai une application qui consiste en une page de base contenant un en-tête (panneau), un pied de page (panneau) et le centre du contenu de la page héritée. Le problème que je rencontre est avec ResourceReferences (ce n'est peut-être même pas la bonne façon). Je recherche une solution qui me permettra de procéder comme suit:

  1. Avoir un seul répertoire pour les images utilisées globalement, js, css
  2. Enregistrez ou non ces ressources afin qu'elles puissent être accessibles à partir de n'importe quelle page héritée ou pages frères à BasePage que je pourrais créer à l'avenir
  3. Autoriser ces ressources à être accessibles dans CSS et JS (par exemple, des URL à des images)

Jusqu'à présent, j'ai lu plusieurs exemples qui montrent comment mettre en package une ressource pour un composant ou une étendue de niveau d'application, mais aucun ne semble résoudre les 3 problèmes pour lesquels je cherche de l'aide. Il est essentiel que je n’aie pas à copier des images utilisées globalement (icône d’édition, logos, etc.) dans chaque package de composants pour les référencer, et il serait bien pour des raisons de maintenance que ces liaisons soient effectuées à un endroit global pour faciliter la référence et mise à jour.

Était-ce utile?

La solution

Cela a considérablement changé depuis Wicket 1.4. Veuillez consulter 'Ajout de Javascript ou de CSS à l'aide de une ressource 'dans le Wiki du Wicket

Pour rendre les images et autres ressources accessibles globalement (notamment à partir de fichiers CSS et JS), montez-les dans la méthode init () de vos applications:

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

Il n'y a absolument aucun besoin de dupliquer les ressources de quelque manière que ce soit. Les ressources ne doivent pas nécessairement figurer dans les mêmes packages que le composant lui-même. Dans nos applications, nous mettons des ressources utilisées globalement dans des packages dédiés (disons com.example.myapp.images) et y mettons une classe unique (par exemple, ImagesScope.java) - idem pour JS et CSS.

Pour les images, vous n'avez pas besoin de ResourceReference , car vous n'avez pas besoin de restituer ces références dans votre code (sauf pour org.apache.wicket.markup.html.image.Image). Pour JS et CSS, utilisez

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

Au fait, je suis l'auteur d'une petite bibliothèque appelée wicketstuff-merged-resources disponible sur GitHub. En utilisant cette bibliothèque, vous pouvez ignorer le montage manuel dans init () de votre application et utiliser à la place des annotations.

EDIT: lien mis à jour. Malheureusement, la documentation dans le wiki de wicketstuff semble avoir disparu maintenant. Il existe quelques articles sur notre blog .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top