如果一个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