概要 :
実行時にポートレットのinit-paramsを取得する場合は、を使用com.liferay.portal.service.PortletLocalServiceUtil
してポートレットを取得できます。
次に、のインスタンスを取得しますcom.liferay.portal.model.Portlet
。
これは、便利なメソッドを呼び出す可能性を提供するため、非常に便利なオブジェクトです。
public java.util.Map<java.lang.String, java.lang.String> getInitParams();
コードスニペット:
ポートレットでは、liferayサーバーで実行されているサーブレット、サーバーの起動時に実行されているフック、クォーツジョブ、サービス...
次のコードを呼び出して、ポートレットのinit-paramマップを取得できます。
import com.liferay.portal.model.Portlet;
import com.liferay.portal.service.PortletLocalServiceUtil;
import java.lang.String;
import java.util.Map;
...
/* Determine what is your portlet's id, you can go as follows or find it after placing one in a page and check it's id with a tool like firebug */
String myPortletId = "myPortletName_WAR_myPortletWar";
/* Get the actual portlet model object with the appropriate service call */
Portlet myPortletObject PortletLocalServiceUtil.getPortletById(myPortletId);
/* Get the map of init-params from the portlet model object */
Map<String,String> initParamMap = myPortletObject.getInitParams();
/* You can now iterate on your map as on any other */
for (String currentParamKey : initParamMap.keySet()) {
String currentParamValue = initParamMap.get(currentParamKey);
/* do stuff */
}
舞台裏の原則:
Liferayでは、ポートレットを使用できるように登録する必要があります。
デプロイされると、ポータルはそれを登録し、それとinit-params
他の多くの情報を登録します。
この事実について最も幸運なのは、Liferayがそれらすべてのデータをデータベースに保存することです。
Liferayがデータベースに保存するほとんどすべての情報と同様に、これらの情報にはLiferayServiceからアクセスできます。
これらのサービスには、多数のユーティリティメソッドが付属しています。
- いくつかの、非常に基本的な(高度なクラッドのような)
- 現在のサービスに固有のもの。
私のコード例では、によってポートレットを検索するメソッドのおかげで、ポートレットオブジェクトを取得しましたportletId
。これportletId
は、テーブルのデータベースの主キーではありませんPortlet
。
したがって、Liferayは、意味のない数値である主キーを強制的に要求するのではなく、 portletId
(実際にはその名前long
)を関連付けること自体がビジネスです。
PortletLocalServiceUtilには多くのファインダーが用意されているため、他のメソッドを使用してポートレットのオブジェクトを取得できます。「アウトライン」ビューを提供するIDEで
ファイルをチェックして、すべての可能性をよりよく理解することを強くお勧めします。$LIFERAY_PORTAL_SRC/portal-service/src/com/liferay/portal/service/PortletLocalServiceUtil.java
結論 :
お役に立てれば ;)