【发布时间】:2015-01-13 07:59:32
【问题描述】:
我有一个在 6.1 中工作的 JSF portlet。当我升级到 6.2 CE GA2 时,preferences.store() 抛出 UnsupportedOperationException。我得到的首选项对象如下:
FacesContext facesContext = FacesContext.getCurrentInstance();
ExternalContext externalContext = facesContext.getExternalContext();
// Get portlet preferences
PortletRequest portletRequest = (PortletRequest) externalContext.getRequest();
PortletPreferences portletPreferences = portletRequest.getPreferences();
我在 liferay-portlet.xml 中有以下属性:
<preferences-unique-per-layout>true</preferences-unique-per-layout>
<preferences-owned-by-group>false</preferences-owned-by-group>
我发现了一些相关的线程和错误报告 (https://issues.liferay.com/browse/LPS-42458)。我可以确认,当我确认此代码有效时。问题已解决,但我仍然遇到此问题。我也尝试实现该钩子解决方法,但该接口似乎在 GA2 中发生了更改。
此外,当我使用以下代码获取首选项存储时,store() 会毫无例外地执行,但它似乎访问的值与我在文章开头使用代码获得的首选项不同。
FacesContext facesContext = FacesContext.getCurrentInstance();
ExternalContext externalContext = facesContext.getExternalContext();
PortletRequest portletRequest = (PortletRequest) externalContext.getRequest();
// Get portlet preferences
PortletPreferences portletPreferences = null;
try {
portletPreferences = PortletPreferencesFactoryUtil.getPortletSetup(
portletRequest, PortletIdUtil.getPorletId());
} catch (PortalException | SystemException e) {
e.printStackTrace();
}
if(portletPreferences == null) {
return;
}
有什么建议吗?
【问题讨论】: