Guichet Dynamique URL de l'Image
Petite question:
J'ai besoin de transformer une image dynamique tiré à partir d'une base de données dans une URL sans l'ajout d'un composant à l'affichage de la page (comme l'utilisation d'un NonCachingImage) à l'aide de Guichet.
La solution parfaite (que j'ai mis en place dans d'autres Cadres) est simplement de créer une page qui prend l'ID de l'image comme un paramètre de l'url et affiche l'image pour le flux de réponse. Malheureusement, le Guichet de la classe de la Page étend MarkupContainer, qui tourne autour de la MarkupStreams. MarkupStreams ne sont pas très propice à l'rendu octet de données directement.
Longue question:
Je suis en utilisant le Guichet 1.4.0, l'exécution de Tomcat 6.0.18. L'image est stockée dans une base de données Postgres, récupéré via JDBC. L'image doit être rendue par un tiers de l'API qui n'accepte que les Url de l'image. J'ai un modèle objet qui contient l'octet de données, le type mime et un objet de Ressource qui peut tirer le modèle de la DB et l'ajouter à un flux de réponse.
Des idées?
Vous devez vous connecter pour publier un commentaire.
J'ai seulement commencé à travailler avec Wicket moi-même, mais je voudrais simplement monter la ressource en tant que ressource partagée avec sa propre URL. Vous venez de remplacer
init()
dans votreApplication
et enregistrer la ressource avecEnsuite, vous montez comme une ressource partagée avec
Pour une raison quelconque, que je n'ai pas encore tout à fait compris, vous devez faire précéder le nom de la classe de l'application de la clé de ressource que vous passez à
mountSharedResource()
.Ajoutons un travail entièrement exemple, pour certains bonus votes! D'abord créer un vide Guichet modèle avec
Ensuite, remplacer le
init()
méthode dansWicketApplication
en ajoutant:Le peu de dynamique PNG ressource écrit le paramètre de requête sur fond noir. Bien sûr, vous pouvez accéder à votre base de données ou faire ce que vous voulez pour produire les données d'image.
Enfin, exécutez
mvn jetty:run
, et vous serez en mesure d'accéder à la ressource à cette URL.getSharedResources().putClassAlias(ListInitializer.class, "list"); new ListInitializer().init(this);
vous devriez être en mesure de se déplacer ajoutant l'ensemble du classpath pour vous url de l'image.ListInitializer
classe de Guichet et de la documentation disponible surputClassAlias
n'est pas utile non plus.Je vais ajouter une autre réponse de dire Martin Grigorov a écrit un très bon article sur le blog de plus à wicketinaction.com détail de la manière de servir des images chargées à partir d'une base de données dans le Guichet 1.5:
http://wicketinaction.com/2011/07/wicket-1-5-mounting-resources/
Cela correspond exactement avec @Michael question.
Voici mon exemple qui fait de même pour la dynamique d'une liste compilée des identificateurs, a servi en tant que ressource partagée avec une URL statique..
Et mon ListInitializer qui enregistre les ressources DBNAME_SUBSELECTION1(2/3/..)
Je suis désolé mais je n'arrive pas à trouver le tutoriel, j'ai utilisé de cette série de plus, mais il devrait être évident, comment cela se rapporte à l'exemple ci-dessus et peut être ajusté à faire de même pour les images.. (Désolé pour les rares explication, si c'est toujours pas clair je pourrais revenir et modifier ma réponse)