bloggers bloggers

Marco Napolitano
Messaggi: 79
Stelle: 0
Data: 17/02/22
Jader Jed Francia
Messaggi: 63
Stelle: 0
Data: 18/02/21
Paolo Gambetti
Messaggi: 2
Stelle: 0
Data: 11/11/19
Katia Pazzi
Messaggi: 1
Stelle: 0
Data: 27/06/19
Ezio Lombardi
Messaggi: 11
Stelle: 0
Data: 10/04/18
Chiara Mambretti
Messaggi: 25
Stelle: 0
Data: 27/02/17
Serena Traversi
Messaggi: 3
Stelle: 0
Data: 21/07/16
Francesco Falanga
Messaggi: 8
Stelle: 0
Data: 14/06/16
Antonio Musarra
Messaggi: 2
Stelle: 0
Data: 18/11/13
Simone Celli Marchi
Messaggi: 6
Stelle: 0
Data: 09/07/13
Indietro

Liferay 7.1: taglib multiple in un unico bundle!

Buongiorno a tutti e ben trovati sul nostro blog! ;)

Il post di oggi sarà super rapido e semplicissimo: di fatto, come spiego anche nell'intro, mi sono trovato a dover centralizzare taglib che vivevano in bundle differenti all'interno di un unico bundle centralizzato.

Fin qui la cosa potrebbe sembrare semplice: fai un po' di copia / incolla / trascina (per i più sofisticati potrei definirlo refactor.. ;)) ma poi.. Fai deploy e scopri che non funziona più nulla!

Come mai? Perché? Cosa NON ho copiato? Cosa ho sbagliato?

Prima di farmi attanagliare da tutti questi dubbi, come spesso faccio :), mi sono buttato a capofitto nei sorgenti di Liferay 7.1 e ho scoperto che la cosa, da sistemare, era davvero semplice!

bnd.bnd: come sempre, tutto parte da qui!

Anche questa volta il titolo del capitolo non è molto evocativo ;), però è un periodo durante il quale la mia creatività è bassa.. Non me ne vogliate!

Però il titolo è molto vero; infatti la prima cosa da fare è modificare il file bnd.bnd (che poi altro non è che il responsabile di quello che finisce nel manifest del nostro bundle OSGi) per dirgli:

  • che, ovviamente, fornisce come servizio delle taglib;
  • che abbiamo più di una taglib all'interno del bundle.

Per fare questa magia, quindi, ho modificato così il mio bnd.bnd:

Bundle-Name: dvel-util-taglib
Bundle-SymbolicName: it.dvel.playground.util.taglib
Bundle-Version: 1.0.0
Export-Package: \
it.dvel.playground.util.taglib.search.tag,\
    it.dvel.playground.util.taglib.rubrica.tag
Provide-Capability:\
        osgi.extender;\
                osgi.extender="jsp.taglib";\
                uri="http://www.d-vel.com/tld/dvel";\
                version:Version="${Bundle-Version}",\
        osgi.extender;\
                osgi.extender="jsp.taglib";\
                uri="http://www.d-vel.com/tld/rubrica";\
                version:Version="${Bundle-Version}"
Web-ContextPath: /dvel-taglib

La parte interessante è chiaramente quella che riguarda la property Provide-Capability; a questa, infatti, faccio corrispondere una lista di osgi.extender dove, per ognuno di essi, specifico la uri della singola taglib.

Fatto questo il problema è risolto! Ora non ci resta che usare il nostro modulo e quindi le nostre taglib!

Come fare? Semplice: nelle singole JSP dove ci servono, ci basterà importare la taglib (sempre nella init.jsp, mi raccomando!):

<%@ taglib prefix="rubrica" uri="http://www.d-vel.com/tld/rubrica" %>

e poi.. Utilizzarla:

<rubrica:listUtil var="listUtil" />

Come detto, questo post è super veloce e molto semplice.. Se sapevate come fare questa cosa!!

Spero di avervi dato un buon suggerimento; se vi occorrono maggiori dettagli o siete semplicemente curiosi di conoscere qualche altro dettaglio su questo tema, come sempre, usate l'area dei commenti e saremo ben lieti di aiutarvi!!

A presto e buon divertimento con Liferay 7.1, le taglib (centralizzate tutte in un unico modulo) e i casi funzionali degli animali mitologici più strani che ci siano! :)

Alla prossima!!

Commenti
Nessun commento. Vuoi essere il primo.