Tôi đang di chuyển các porter Liferay của mình từ 6.0 lên Liferay 7.0 và một trong số nhiều rào chắn mà tôi đang nhấn là đưa thẻ tag tùy chỉnh của mình vào.Taglib tùy chỉnh không được nạp với Liferay7
Tôi làm theo các lời khuyên từ: Creating a custom taglib in Liferay 7 nhưng portlet của tôi thất bại trong việc tải các taglib, lỗi sau đây được đăng:
09:50:48,566 ERROR [http-nio-8080-exec-10][FreeMarkerManager:208] Unable to add taglib my_tags to context
FreeMarker template error:
freemarker.template.TemplateModelException: Error while loading tag library for URI "/META-INF/my_tags.tld" from TLD location "servletContext:/META-INF/my_tags.tld"; see cause exception.
at freemarker.ext.jsp.TaglibFactory.get(TaglibFactory.java:260)
at com.liferay.portal.template.freemarker.internal.FreeMarkerManager$TaglibFactoryWrapper.get(FreeMarkerManager.java:647)
at com.liferay.portal.template.freemarker.internal.FreeMarkerManager.addTaglibSupport(FreeMarkerManager.java:205)
at com.liferay.taglib.util.ThemeUtil.doIncludeFTL(ThemeUtil.java:276)
at com.liferay.taglib.util.ThemeUtil.doDispatch(ThemeUtil.java:157)
at com.liferay.taglib.util.ThemeUtil.includeFTL(ThemeUtil.java:100)
at com.liferay.taglib.util.ThemeUtil.include(ThemeUtil.java:82)
Tuy nhiên, bó của tôi JAR không chứa META-INF/my_tags.tld
gì đập vào mắt tôi , là lỗi không xảy ra khi JSP của tôi được tải nhưng một nơi nào đó bên trong khuôn mẫu FreeMarker của chủ đề. Rõ ràng JSP của tôi thậm chí không được nạp vào thời điểm đó.
Các lỗi được ném vào mỗi trang trong cổng thông tin của tôi, không chỉ những người có chứa portlet của tôi (s) (mà là để được mong đợi nếu các chủ đề đã thất bại trong việc truy cập vào taglib)
Cấu trúc của gói JAR là:
com/
content/
META-INF/
+--- resources/
MANIFEST.MF
taglib-mappings.properties
my_tags.tld
OSGI-INF/
WEB-INF/
các MANIFEST.MF được tạo ra bởi các nhiệm vụ BND chứa phụ thuộc sau:
Require-Capability: osgi.extender;osgi.extender="jsp.taglib";uri="/META-INF/my_tags.tld"
Các tập tin taglib-mappings.properties
chứa:
my_tags=/META-INF/my_tags.tld
Tôi cũng đã cố gắng đưa các tập tin .TLD vào WEB-INF/tld
nơi mà nó sẽ ở cùng với một đơn giản, đơn giản, tiêu chuẩn portlet hoặc web ứng dụng, nhưng không có kết quả trong hai.
Tôi có cần phải thêm ánh xạ trong web.xml
(Tôi không chắc liệu các portlet OSGi mới có sử dụng web.xml) hoặc thêm một số tùy chọn cấu hình khác không?