Preferences.store()在Liferay 6.2 GA2中抛出UnsupportedOperationException

时间:2015-01-13 07:59:32

标签: liferay liferay-6 portlet

我有一个在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;
}

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

我无法确认界面是否已更改。我没有完全测试,但LPS-42458中提到的解决方法对我没有编译错误。当您在该重写的服务包装上修复导入时,请确保选择正确的SystemException,因为Liferay容易混淆其中两个。 com.liferay.portal.kernel.exception.SystemException需要为我编译代码

相关问题