Liferay Form 发送的自定义电子邮件
Custom email sent by Liferay Form
我正在尝试覆盖 Liferay Form 发出的电子邮件通知。我遵循了本主题中的技巧:https://community.liferay.com/it/forums/-/message_boards/view_message/104934134。
没有骰子。我已经成功地添加了 DDLFormEmailNotificationSender 的自定义实现。哪个注册正确,(使用正确的服务)。如果我查看已注册的服务,我的自定义 DDLFormEmailNotificationSender 会排在最前面。但是当我提交表单时,liferay 继续使用 'normal' 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 现在是空的。但这只是为了测试目的。
我创建了一个片段来公开私有包,如论坛中所述post:
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" 包。
如果我在 Apache GOGO 中检查 DDLFormEmailNotificationSender:
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。
我得到了 Liferay 社区的一些支持,并找到了修复方法。
以上配置正确!但是,引用 DDLFormEmailNotification 的 (liferay) 服务具有静态/不情愿的引用。我必须创建一个配置文件以放入我的 osgi/configs 文件夹,它定义了正确的实现。 (我的 CustomDDLFormEmailNotificationSender)。
我的配置文件名为:com.liferay.dynamic.data.lists.form.web.internal.portlet.action.AddRecordMVCActionCommand.config
这是因为我需要配置AddRecordMVCAction 命令。 (将在那里定义的引用配置为静态/不情愿)。
它包含:
DDLFormEmailNotificationSender.target="(component.name\=be.xxx.portal.website.form.CustomDDLFormEmailNotificationSender)"
所以基本上它说:DDLFormEmailNotificationSender(那里的参考名称)应该是:be.xxx.portal.website.form.CustomDDLFormEmailNotificationSender。
确保组件部署正确,因为一旦配置,就无法回退到原始实现。 (如果删除该配置,osgi 将回退)。
希望这对某人有所帮助。
我正在尝试覆盖 Liferay Form 发出的电子邮件通知。我遵循了本主题中的技巧:https://community.liferay.com/it/forums/-/message_boards/view_message/104934134。 没有骰子。我已经成功地添加了 DDLFormEmailNotificationSender 的自定义实现。哪个注册正确,(使用正确的服务)。如果我查看已注册的服务,我的自定义 DDLFormEmailNotificationSender 会排在最前面。但是当我提交表单时,liferay 继续使用 'normal' 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 现在是空的。但这只是为了测试目的。
我创建了一个片段来公开私有包,如论坛中所述post:
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" 包。
如果我在 Apache GOGO 中检查 DDLFormEmailNotificationSender:
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。
我得到了 Liferay 社区的一些支持,并找到了修复方法。
以上配置正确!但是,引用 DDLFormEmailNotification 的 (liferay) 服务具有静态/不情愿的引用。我必须创建一个配置文件以放入我的 osgi/configs 文件夹,它定义了正确的实现。 (我的 CustomDDLFormEmailNotificationSender)。
我的配置文件名为:com.liferay.dynamic.data.lists.form.web.internal.portlet.action.AddRecordMVCActionCommand.config
这是因为我需要配置AddRecordMVCAction 命令。 (将在那里定义的引用配置为静态/不情愿)。
它包含:
DDLFormEmailNotificationSender.target="(component.name\=be.xxx.portal.website.form.CustomDDLFormEmailNotificationSender)"
所以基本上它说:DDLFormEmailNotificationSender(那里的参考名称)应该是:be.xxx.portal.website.form.CustomDDLFormEmailNotificationSender。
确保组件部署正确,因为一旦配置,就无法回退到原始实现。 (如果删除该配置,osgi 将回退)。
希望这对某人有所帮助。