Я пытаюсь переопределить уведомление по электронной почте, отправленное с помощью Liferay Form. Я следовал за трюками в этой теме: https://community.liferay.com/it/forums/-/message_boards/view_message/104934134.
Нет кости. Я успешно добавил пользовательскую реализацию DDLFormEmailNotificationSender. Который зарегистрирован правильно, (с корректным обслуживанием). Если я проверяю зарегистрированный сервис, мой пользовательский DDLFormEmailNotificationSender выходит на первое место. Но когда я отправляю форму, liferay продолжает использовать «обычный» DDLFormEmailNotificationSender, а не мой пользовательский DDLFormEmailNotificationSender. Любые советы и подсказки?
Мой DDLFormEmailNotificationSender выглядит так:
@Component(
immediate = true,
property = {
"service.ranking:Integer=100"
},
service = DDLFormEmailNotificationSender.class
)
public class CustomDDLFormEmailNotificationSender extends DDLFormEmailNotificationSender {
private static final String CUSTOM_TEMPLATE_PATH = "";
@Override
protected Template createTemplate(
PortletRequest portletRequest, DDLRecordSet recordSet,
DDLRecord record) throws PortalException {
Template template = TemplateManagerUtil.getTemplate(TemplateConstants.LANG_TYPE_SOY,
getTemplateResource(CUSTOM_TEMPLATE_PATH), false);
populateParameters(template, portletRequest, recordSet, record);
return template;
}
}
(Я знаю, что CUSTOM_TEMPLATE_PATH сейчас пуст. Но это только для целей тестирования.
Я создал фрагмент для раскрытия приватного пакета, как описано в сообщении на форуме:
Bundle-Name: liferay-xxx-dynamic-data-lists-form-override
Bundle-SymbolicName: liferay.xxx.dynamic.data.lists.form.override
Fragment-Host: com.liferay.dynamic.data.lists.form.web;bundle-version="2.0.15"
Export-Package: com.liferay.dynamic.data.lists.form.web.internal.notification
-jsp: *.jsp,*.jspf
-plugin.jsp: com.liferay.ant.bnd.jsp.JspAnalyzerPlugin
-plugin.resourcebundle: com.liferay.ant.bnd.resource.bundle.ResourceBundleLoaderAnalyzerPlugin
-plugin.sass: com.liferay.ant.bnd.sass.SassAnalyzerPlugin
-sass: *
Итак, вы можете видеть, что я раскрыл пакет "com.liferay.dynamic.data.lists.form.web.internal.notification".
Если я проверяю DDLFormEmailNotificationSender в Apache GOGO:
services | grep DDLFormEmailNotificationSender
{com.liferay.dynamic.data.lists.form.web.internal.notification.DDLFormEmailNotificationSender}={service.ranking=100, component.name=be.xxx.portal.website.form.CustomDDLFormEmailNotificationSender, component.id=519, service.id=299, service.bundleid=757, service.scope=bundle}
{com.liferay.dynamic.data.lists.form.web.internal.notification.DDLFormEmailNotificationSender}={component.name=com.liferay.dynamic.data.lists.form.web.internal.notification.DDLFormEmailNotificationSender, component.id=811, service.id=2629, service.bundleid=143, service.scope=bundle}
true
Я на Liferay 7.0.