3

我对 liferay 7 非常陌生,实际上我们正在将 liferay 6.2 迁移到 liferay-7,在 6.2 中我们使用 ext 来覆盖动作类,但在 liferay-7 中我有些困惑,请你帮帮我。

我的 ext 的主要主题是:每当从控制面板在组织中创建新角色时,我们需要将角色信息和组织信息存储在我们的自定义表中,因为我们已经在 LR6.2 中覆盖了 EditRoleAction.java,所以相同我们试图在 LR7 中实现的目标。

Liferay 6.2 中的动作类:

传送门路径: D:\Liferay6.2workspace\portal\portal-impl\src\com\liferay\portlet\rolesadmin\action\EditRoleAction.java

外部路径: CutomRoles-ext/docroot/WEB-INF/ext-impl/src/com/liferay/portlet/rolesadmin/action/EditRoleAction.java

Liferay 7.0GA4 中的动作类:

D:\Liferay7GA4\portal\modules\apps\foundation\roles\roles-admin-web\src\main\java\com\liferay\roles\admin\web\internal\portlet* RolesAdminPortlet.java*

4

1 回答 1

0

听起来真的像覆盖 Action 不是正确的去处。查找ServiceWrappers - 这些将在业务层上运行,您可以向(从内存中)RoleLocalService.addRole(...)和其他相关方法添加额外的代码。

为此目的从来没有必要使用 Ext,而且一开始就不应该使用 Ext。事实上,使用 ext 时,您故意使维护和升级比使用常规插件路线更难。对于 Liferay 7 和 DXP,使用 ext 应该是非常罕见的绝对例外。事实上,它只是在迄今为止缺席后才重新引入(因为在少数罕见的例外情况下,它仍然是唯一的方法)。但是,可以安全地假设您不需要它。

现在这个答案的评论中的描述比问题中的描述更进一步:您可能还需要一些 portlet 级别的自定义。为此:确定 portlet 当前在哪里实现(例如,识别模块)并覆盖它的操作(这篇文章很有可能会提供帮助)以及潜在的 UI。

还有另一种选择:您可以通过在组织的站点中使用 Teams 来实现相同的目的:它们的行为几乎与角色相似,但仅对单个站点可用(虽然没有组织,但您声明您的组织仍然有站点)

于 2017-07-13T12:13:39.347 回答