4

現在、次の方法で別のポートレットへの URL を生成しています。

<liferay-portlet:actionURL var="custom" portletName="portlet2_WAR_portlet2">
   <portlet:param name="action" value="advanced"/>
   <portlet:param name="value" value="321"/>
</liferay-portlet:actionURL>

最も重要な部分はportletName引数です。彼らがLiferayのページで言ったように、私はそれを構築し ます。問題は、手動で を作成するのportletNameが恐ろしいことです。タイプミス、名前の変更を想像してみてください...

私の質問は次のとおりです。有効なポートレット名を自動的に作成できるユーティリティ クラス、jsp タグ (または類似のもの) はありますか (ポートレットの名前など、プログラマからの情報が与えられます)。

1 つ: 私のポートレットはシングルトンなので、INSTANCEパラメータは必要ありません。

4

2 に答える 2

3

ポートレット名はほとんど変更されません。liferay でさえ定数クラス ( PortletKeys.java) を使用してポートレット ID を格納し、頻繁に使用します。

ポートレットの主キーのようなもので、変更された場合は新しいポートレットになる可能性があります。

そのため、ポートレットがサード パーティのポートレットに依存していて、ポートレットの ID/名前が変更された場合、それに一致するようにコードを変更する以外に方法はありません。

他に良い方法があれば、それも教えていただけると幸いです。

于 2012-06-20T03:43:51.273 に答える
3

正しいポートレット名を取得するには、その ID が必要です。

Liferay はcom.liferay.portal.service.PortletLocalServiceUtilサービス util クラスとメソッドを提供しますgetPortletById(String id)。これによりcom.liferay.portal.model.Portletobject が得られ、 method からgetPortletName()ポートレット名が得られます。

組み込みポートレットの ID は com.liferay.portal.util.PortletKeys で使用できるため、ID をハードロックする必要はありません (少なくとも組み込みポートレットの場合)。

于 2012-06-19T16:00:16.010 に答える