2017-07-10 4 views
3

Ich bin sehr neu in liveray 7, eigentlich migrieren wir liveray 6.2 zu liveray-7, in 6.2 benutzen wir ext, um die Action-Klasse außer Kraft zu setzen, aber im liveray-7 bekomme ich eine Kofusion, könntest du mir bitte helfen aus.Wie können wir das Liferay-Modul in Liferay7 überschreiben?

Das Hauptthema meiner ext:, wenn eine neue Rolle in einer Organisation über das Bedienfeld erstellt bekommen, müssen wir feststellen, dass die Rolleninformationen und Organisationsinformationen in unserer benutzerdefinierten Tabelle speichern, denn wir EditRoleAction.java außer Kraft gesetzt haben in LR6.2 so das gleiche versuchen wir in LR7 zu erreichen.

Action-Klasse in Liferay 6.2:

Portal Pfad: D: \ Liferay6.2workspace \ portal \ portal impl \ src \ com \ liferay \ Portlet \ rolesadmin \ Aktion \ EditRoleAction.java

ext Pfad: CutomRoles-ext/docroot/WEB-INF/ext-impl/src/com/liferay/Portlet/rolesadmin/action/EditRoleAction.java

Action-Klasse in Liferay 7.0GA4:

D: \ Liferay7GA4 \ portal \ Module \ apps \ Stiftung \ Rollen \ Rollen-admin-web \ src \ main \ java \ com \ liferay \ Rollen \ admin \ web \ internes \ portlet * RolesAdminPortlet.java *

+0

wir sind hier, um "auszuhelfen", aber Sie beschreiben nur einige Dateien, aber nicht das, was Sie eigentlich erreichen wollen. Was machst du in der überschriebenen Aktion - oder fügst du eine neue Aktion hinzu? Bitte beschreiben Sie in Code-sowie in Business-Bedingungen (nicht mit diesen Details zu kommentieren, sondern bearbeiten Sie Ihre Frage) –

+0

Hallo @OlafKock können Sie bitte überprüfen Sie die aktualisierte Frage – PVBRaju

Antwort

0

Es klingt wirklich wie das Überschreiben der Aktion ist nicht der richtige Ort zu gehen. Nachschlagen ServiceWrappers - diese werden auf der Business-Schicht ausgeführt, und Sie können zusätzlichen Code hinzufügen (aus dem Speicher) RoleLocalService.addRole(...) und andere verwandte Methoden.

Ext war nie für diesen Zweck notwendig und sollte nicht in erster Linie verwendet worden sein. In der Tat, mit der Verwendung von ext machen Sie Wartung und Upgrades absichtlich viel schwieriger als wenn Sie die normale Plugin-Route gehen. Und mit Liferay 7 und DXP sollte die Verwendung von ext die extrem seltene absolute Ausnahme von der Regel sein. In der Tat wird es gerade wieder eingeführt, nachdem es bisher abwesend war (weil es in einigen seltenen Ausnahmefällen immer noch der einzige Weg ist). Es ist jedoch davon auszugehen, dass Sie es nicht brauchen.

Nun, die Beschreibung in den Kommentaren zu dieser Antwort geht viel weiter als die Beschreibung in der Frage: Sie benötigen möglicherweise auch Anpassungen auf Portlet-Ebene. Dazu: Identifizieren Sie, wo das Portlet derzeit implementiert ist (z. B. das Modul identifizieren) und überschreiben Sie seine Aktionen (es besteht eine gute Chance, dass this article helfen kann) und möglicherweise auch die Benutzeroberfläche.

Und noch eine Alternative: Sie können dasselbe erreichen, indem Sie Teams auf der Website der Organisation verwenden: Sie verhalten sich fast wie Rollen, sind aber nur für eine einzelne Site verfügbar (keine Organisation, aber Sie geben an, dass Ihre Organisation) Websites sowieso)

+0

Danke @Olaf Kock, aber wie könnte ich die Organisation bekommen -id in der addRole() -Methode – PVBRaju

+0

Eine Rolle hat keine Organisations-ID, nicht sicher, was Sie erreichen möchten: Wenn Sie eine Rolle erstellen, ist dies nur eine Rolle.Nur wenn Sie jemandem eine Organisationsbereichsrolle zuweisen, ist eine Organisations-ID beteiligt. Aber das ist weit weg von wo Sie die Rolle –

+0

Vielen Dank @Oalf Kock für Ihre wertvolle Antwort, Ja, was auch immer Sie gesagt haben, absolut richtig, aber wir wollen die Rolle-ID und ** Organisation-ID ** (von welcher Website (Organisation) die Rolle wird erstellt) in unserer benutzerdefinierten Tabelle, auch haben wir nicht ** Request-Objekt ** so, wie könnte ich die organisationId, gibt es eine Möglichkeit, die organisationId aus dem ** Service-Kontext-Objekt ** – PVBRaju

Verwandte Themen