Benutzerdefinierte Taglib nicht mit Liferay7 geladen

8

Ich migriere meine Liferay-Portlets von 6.0 auf Liferay 7.0 und eine der vielen Roadblocks, die ich treffe, ist die Einbeziehung meiner benutzerdefinierten Taglib.

Ich folgte dem Rat von: Erstellen einer benutzerdefinierten Taglib in Liferay 7 , aber mein Portlet lädt die Taglib nicht, die Folgefehler wird protokolliert:

%Vor%

Allerdings enthält mein Bündel JAR META-INF/my_tags.tld

Was mir auffällt, ist, dass der Fehler nicht auftritt, wenn meine JSP geladen wird, sondern irgendwo in der FreeMarker-Vorlage des Themas. Anscheinend ist meine JSP zu diesem Zeitpunkt nicht einmal geladen.

Der Fehler wird auf jeder Seite in meinem Portal ausgelöst, nicht nur auf denen, die meine Portlets enthalten (was zu erwarten ist, wenn das Theme bereits nicht auf die Taglib zugreifen kann)

Die Struktur der Bündel-JAR ist:

%Vor%

Die MANIFEST.MF, die von der bnd-Task generiert wird, enthält die folgende Abhängigkeit:

%Vor%

Die Datei taglib-mappings.properties enthält:

%Vor%

Ich habe auch versucht, die .tld-Dateien in WEB-INF/tld zu setzen, wo es mit einem einfachen, einfachen Standard-Portlet oder einer Webanwendung wäre, aber auch ohne Erfolg.

Muss ich eine Zuordnung in web.xml hinzufügen (ich bin nicht sicher, ob die neuen OSGi-Portlets sogar web.xml verwenden) oder eine andere Konfigurationsoption hinzufügen?

    
a_horse_with_no_name 28.06.2017, 08:10
quelle

1 Antwort

5

OK, ich habe es selbst herausgefunden.

Das Verzeichnislayout muss so aussehen:

%Vor%

Im Gegensatz zu einigen Hinweisen im Internet wird die Datei taglib-mappings.properties nicht benötigt. Wenn es vorhanden ist, wirft Liferay eine Vielzahl von Ausnahmen, weil die Freemarker-Engine versucht, auf die Taglibs zuzugreifen, auf die in taglib-mappings.properties verwiesen wird.

Und my_tags.tld enthält Folgendes:

%Vor%

Auf der JSP-Seite ist das Tag folgendermaßen definiert:

%Vor%

Ich mache nicht eine Require-Capability: für meine eigenen Tags in der OSGI MANIFEST.MF-Datei.

Ich schließe nur das für die Standard-JSTL- und Liferay-Tags ein:

%Vor%

Allerdings musste ich einige Pakete in der OSGI-Datei bnd.bnd ausschließen, die aufgrund der Abhängigkeit von javax.servlet.jsp und jstl

enthalten waren %Vor%     
a_horse_with_no_name 06.07.2017, 10:20
quelle

Tags und Links