如何覆盖liferay7中的liferay模块?

如何覆盖liferay7中的liferay模块?,liferay,liferay-7,liferay-6.2,liferay-dxp,Liferay,Liferay 7,Liferay 6.2,Liferay Dxp,我对liferay 7非常陌生,实际上我们正在将liferay 6.2迁移到liferay-7,在6.2中,我们使用ext覆盖action类,但在liferay-7中,我得到了一些cofusion,请您帮助我 我的ext的主题是:无论何时从控制面板在组织中创建新角色,我们都需要将角色信息和组织信息存储在自定义表中,因为我们在LR6.2中覆盖了EditRoleAction.java,所以我们在LR7中尝试实现同样的目标 Liferay 6.2中的动作类: 门户路径: D:\Liferay6.2wo

我对liferay 7非常陌生,实际上我们正在将liferay 6.2迁移到liferay-7,在6.2中,我们使用ext覆盖action类,但在liferay-7中,我得到了一些cofusion,请您帮助我

我的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*rolesadmin portlet.java*听起来覆盖操作不是正确的选择。查找-这些将在业务层上运行,您可以(从内存)向RoleLocalService.addRole(…)和其他相关方法添加其他代码

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

现在,这个答案的注释中的描述比问题中的描述更进一步:您可能还需要一些portlet级别的定制。为此:确定portlet当前在何处实现(例如,确定模块),并覆盖其操作(很有可能会有所帮助),还可能覆盖UI


还有另一种选择:您可以通过在组织的站点中使用团队来实现同样的效果:他们的行为几乎类似于角色,但仅适用于单个站点(虽然没有组织,但您声明您的组织无论如何都有站点)

我们是来“帮助”的,但是您只描述了一些文件,但不是你真正想要的。您在覆盖的操作中做什么?或者您正在添加新操作?请用代码和商业术语描述(不要评论这些细节,而是编辑您的问题)Hello@OlafKock您能检查更新的问题吗谢谢@Olaf Kock,但是我如何在addRole()方法中获取组织id角色没有组织id,不确定你想要实现什么:当你创建一个角色时,它只是一个角色。只有将组织范围的角色分配给某人时,才会涉及组织id。但这远远不是为您的宝贵响应创建roleThank you@Oalf Kock的地方,是的,无论您说什么都绝对正确,但我们希望在自定义表中存储角色id和组织id(从哪个站点(组织)创建角色),即使我们没有请求对象,那么如何获取组织id,是否有可能从服务上下文对象获取organizationId我不理解:角色是从控制面板创建的,而不是从组织内部创建的。即使这样,它也可以在任何组织中使用。您可能会从请求中获得更多信息,但我看不出这些附加信息在现实生活中有什么关联。是的,该角色可以在任何组织中使用,但在我的情况下,组织角色特定于您正在访问的组织(例如:我创建了一个名为“org1”的组织)它有一个站点,现在我访问了org1站点,作为测试登录,在控制面板中,我试图创建organizationrole,以便此orgRole自动映射到org1 organization,并且此orgRole不应对任何其他组织可见,这就是我们在自定义表中存储organizationId及其roleId的原因)