如果一個portlet是一個web應用程序,那麼爲什麼portlet首選項是從ServletRequest(在請求範圍)獲取的?如何在Liferay中正確使用portlet首選項?
怎麼可能採取的喜好,在應用範圍對象?
更新1
我通過以下方式獲得portlet首選項。這是對的嗎?以下的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");
}
}
}
更新2
我用的也是servlet和我的應用程序的靜態對象。正如人們所知,靜態對象在應用程序範圍內。我不知道我可以保持一些靜態對象的portlet首選項對象,或者我需要每次從請求重新獲取它?
其實我已經承認這一點,它的作品,但我想知道它是正確的?
'request'對象既可以是'PortletRequest'也可以是普通的'HttpServletRequest'傳遞給普通的servlet。 – Dims 2012-03-09 11:44:36