Wie man Portlet-Id über den Namen des Portlets in Liferay?
Ich habe eine Anforderung bekommen, Ressource-Berechtigung mit portlet-Namen.
Habe ich den Namen des Portlets nicht die Id.
Resource Permission die Bezeichnung für ein portlet ist, dass die portlet-Id ein. Ich habe in der Portlet-Tabelle nur die Id und andere Informationen. Wo werden die anderen Attribute des portlet gespeichert?.
Gibt es eine Möglichkeit, die ich bekommen kann-portlet Id portlet-name. Ich habe einen workaroud, um alle portlets und vergleichen, aber wenn ich direkt portlet Id portlet-name wird es hilfreich sein.
Seine dringende, wenn jemand weiß pls Antworten zurück, es wird eine große Hilfe sein.
Vielen Dank im Voraus
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie genau hinsehen, wie die Portlet-Id generiert wird, basierend auf den Portlet-Namen, erhalten Sie die Antwort.
Es ist ein konstantes Muster gefolgt, so dass Sie bauen können die Portlet-Id wie liferay tut Sie, wenn Sie die Namen. Liferay baut auch die ID mit Hilfe des portlet-Namen.
Muster der portlet-id:
<portletname in xml>_WAR_<servlet context name i.e. the war file without any special characters such as the hyphen>
Zum Beispiel:
Wenn Ihr portlet-name ist
MyWork
definiert inportlet.xml
und die generierte Datei in diewebapps
Ordner (wenn Sie tomcat verwenden) istMyWork-portlet
dann die resultierende IdMyWork_WAR_MyWorkportlet
.Nun, wenn man liferay-source-code, den man sich anschauen kann
PortletLocalServiceImpl
'sprivate _readPortletXML
Methode.Edit:
Wenn Sie möchten, finden Sie die portlets auf einer bestimmten Seite (angesichts der
friendly-url
von der Seite), dann kann Ihnen dieses Antwort hilfreich.Portlet
Tabelle gespeichert ist, inLayout
TabelletypeSettings
Spalte. Sie können Ihre Frage, dass Sie wolleninstance
info wie gut, dass ist überhaupt nicht klar, aus Ihrer Frage.typeSettings
Spalte als hack, da die Instanz ist nichts anderes als eine zufällige Zeichenfolge angehängt. Vielleicht kann man mehr in die liferay-source-code, wie die Instanz erzeugt wird und wie liferay identifiziert, die es zu speichern PortletPreferences.Können Sie versuchen, diese:
Nicht vergessen: