ポートレットがWebアプリケーションの場合、(要求スコープの)ServletRequestからポートレットの環境設定が取得されるのはなぜですか?Liferayでポートレットの設定を正しく行う方法は?
それはどのように設定がアプリケーションスコープでオブジェクトを取ることが可能ですか?
UPDATE 1
私は次のようにポートレット設定を取得しています。それが正しいか?以下のprefsメンバーは適用範囲にあります。
private synchronized void setupPreferences(HttpServletRequest request) {
// creating preferences
if(prefs == null) {
prefs = PortalUtil.getPreferences(request);
if(prefs != null) {
System.out.println("Preferences were taken from request");
}
String portletResource = ParamUtil.getString(request, "portletResource");
if (Validator.isNotNull(portletResource)) {
try {
System.out.println("Replacing preferences from 'portletRecource' parameter");
prefs = PortletPreferencesFactoryUtil.getPortletSetup(request, portletResource);
} catch (SystemException e) {
e.printStackTrace();
} catch (PortalException e) {
e.printStackTrace();
}
}
if(prefs == null) {
System.out.println("Preferences were NOT obtained yet");
}
else {
System.out.println("Preferences are OK");
}
}
}
UPDATE 2
私は自分のアプリケーションでも、サーブレットや静的オブジェクトを使用しています。静的オブジェクトはアプリケーションスコープ内にあります。いくつかの静的オブジェクトにポートレット環境設定オブジェクトを保持することができますか、または毎回要求から再取得する必要がありますか?
実際に私はすでにこれを仮定していますが、動作しますが、正しいことを知りたいですか?
'request'オブジェクトは、通常のサーブレットに渡す' PortletRequest'または通常の 'HttpServletRequest'の両方になります。 – Dims