2

次のように、動的に作成され、プログラムでレイアウトに追加された liferay ポートレット インスタンスがあります。

String portletId = objUtil.addPortlet("/prj/reports", "XYZPortlet_WAR_ecpmportlet", "column-2",groupId, "type: " + getSelectedType());

したがって、ポートレットを/reportsページに追加します。
ボタンをクリックすると呼び出されるポートレットの下にボタンを追加しsend to dashboardたい このポートレットをユーザー ダッシュボードに永続的にインストールしたい。

注: s ページには、任意の数のポートレット インスタンスを追加でき/reportます。

ご覧のとおり、XYZPortlet は、liferay-portlet.xml で定義されたポートレットの ID です。liferay-display.xml は、レポート ページに追加するすべてのポートレットで同じままです。

新しい ID をポートレット インスタンスに動的に割り当て、それをダッシュ​​ボード レイアウトに永続的にインストールしたいと考えています。

誰でもこれを行う方法を提案できますか?

ありがとう

4

1 に答える 1

2

簡単にグローバル portletId を取得し、それをユーザーのホームページに追加します。

LayoutTypePortlet layoutTypePortlet = (LayoutTypePortlet) userlayout.getLayoutType();
String portletInstanceId = layoutTypePortlet.addPortletId(0, portletId, columnId, -1, false);
LayoutLocalServiceUtil.updateLayout(userlayout.getGroupId(), userlayout.isPrivateLayout(), userlayout.getLayoutId(), userlayout.getTypeSettings());
于 2013-04-29T13:57:33.043 に答える