2

たぶん、init(PortletConfig)のPortletConfigを介して

事は使用することです

((PortletConfigImpl) portletConfig).getPortletId();

package.propertiesにportal-impl.jarを追加すると、ビルドantターゲットを実行しようとすると例外がスローされ、これはもう許可されていないため、許可されなくなりました。

companyIDの場合、どこから始めればよいのか直接わかりません。私は現在使用しています

long companyId = CompanyLocalServiceUtil.getCompanies().get(0).getCompanyId();

しかし、私が複数の会社を取得するとすぐに失敗します

なんとかしてポートレットオブジェクトを取得できれば、portletIdとcompanyIdの両方を取得できれば十分だと思います。

4

3 に答える 3

5

何が必要かは100%わかりませんが、会社が1つしかない場合は、次のコードを使用して会社IDを取得できます。

PortalUtil.getDefaultCompanyId()
于 2012-09-07T20:13:32.950 に答える
3

プラグインへの追加portal-impl.jarは常に問題の原因であり、正しい方法ではありませんでした。これで、ビルドスクリプトによって実際に積極的に禁止されているように見えることを非常に嬉しく思います。この質問で説明したように、これを行うべきではなく、ポートレットAPIは必要なものをサポートしていません。ポートレットインスタンスが追加された会社を知るために必要なコンテキストが厳密にありません。

留意点:ポートレットインスタンスが任意のページに配置されているかどうかに関係なく、ポートレットクラスのインスタンスは1つだけである可能性があります(通常は存在します)。また、ポータル全体、すべての企業、およびサイト。

この道をたどるのではなく、それを使って何を達成しようとしているのかを説明してください。私たちはそれを手伝うかもしれませんが、不可能なことを実装する方法を学ぶのを手伝うことはできません。あるいは、抜け穴を見つけた場合、仕様から大きく外れているため、保守できず、次の更新でランダムに壊れます。

于 2012-09-10T07:33:13.340 に答える
1

メソッドから取得したPortletものをPortletConfig介して取得し、次を使用して取得できます。portletIdPortletconfig.getPortletName()PortletLocalServiceUtil.getPortletById(String)

// I have not tried this but I think it should work
String portletName = Portletconfig.getPortletName();
Portlet portlet = PortletLocalServiceUtil.getPortletById(portletName);
long companyId = portlet.getCompanyId();

そして、ポートレットから簡単にを取得できますcompanyId

オラフ・コックが彼の答えで述べた注意の言葉、したがって、あなたが会社のある側面を知っているならば、あなたにフェッチするためのいくつかの代替案を与える別の答えがここにあります。このアプローチは、Olaf Kockによって説明されている理由により、ポートレットインスタンスからをcompanyIdフェッチしませんcompanyId

このアプローチを試して、これが役立つかどうかを確認してください。

于 2012-09-08T09:02:09.790 に答える