ポートレットには EDIT モードがあり、これがポートレットをパラメータ化できる方法です。
私の質問は、ポートレットがロードされた瞬間にプログラムで正確にパラメータ化する最良の方法は何かということです。
paramA
例: Liferay に特定の ID を持つポートレットの2つのインスタンスをロードさせたいとしますparamB
。
さまざまなパラメーター (Liferay では「ポートレット設定」としてよく知られています) をロードするには、 PortletPreferencesを使用してさまざまなパラメーターを保存および取得できます。
PortletPreferences preferences =
PortletPreferencesFactoryUtil.getPortletSetup(
request, portletId);
ファクトリは 2 つのパラメータを取り、
このオブジェクトを使用すると、パラメーターを取得できます。
String myValue = preferences.getValue("my-value");
そして、値を保存できます:
preferences.setValue("my-value", "this-value");
preferences.store();
「Liferay埋め込みポートレット」は、あなたの質問を解釈して何を求めているかについての基本的な検索を提供します(ただし、完全にはわかりません)。
これにより、 Embedding portlets in your portletと Embedding Portlets in Web Contentのようなヒットが見つかり、一致するようです。
そうでない場合は、ブランディッツィのコメントを2番目に:提案されたソリューション(元の問題の悪いソリューションであっても、技術的な詳細が必要であること)の代わりに、高レベルの問題(ビジネス用語で解決する必要があること)を教えてください。
URL パラメータを使用できます。
2 つのアプローチについて説明します。
1) ポートレットごとに異なるパラメーターを使用しますが、各ポートレット (ポートレット設定) を検索するパラメーター名で構成する必要があります (ポートレットごとに異なります)。
final String parameter = p_request.getPreferences().getValue("parameterName", null));
javax.servlet.http.HttpServletRequest request = com.liferay.portal.util.PortalUtil.getOriginalServletRequest(com.liferay.portal.util.PortalUtil.getHttpServletRequest(p_request));
final String paramValue = request.getParameter(parameter);
使用例: http://www.myserver.com/mypagewithportlets?param1=something1¶m2=somethnig2
2) ポートレットの名前空間を前に付けたパラメーターを使用しますが、パラメーターを使用する場合は、ポートレット ID を知る必要があります (napespace は prefix=suffix=_ を持つポートレット ID です) )
javax.servlet.http.HttpServletRequest request = com.liferay.portal.util.PortalUtil.getOriginalServletRequest(com.liferay.portal.util.PortalUtil.getHttpServletRequest(p_request));
final String paramValue = request.getParameter(p_response.getNamespace() + "myparameter");
p_request
は javax.portlet.PortletRequest を実装します p_response
は javax.portlet.PortletResponse を実装します