【问题标题】:Preferences.store() throws UnsupportedOperationException in Liferay 6.2 GA2Preferences.store() 在 Liferay 6.2 GA2 中抛出 UnsupportedOperationException
【发布时间】: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;
}

有什么建议吗?

【问题讨论】:

    标签: liferay liferay-6 portlet


    【解决方案1】:

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

    【讨论】:

    • 当我尝试实现那个钩子时,我似乎犯了一个愚蠢的错误。正如你所说的解决方法似乎有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-26
    • 2022-01-22
    • 2014-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多