Preferences.store() 在 Liferay 6.2 GA2 中抛出 UnsupportedOperationException
Preferences.store() throws UnsupportedOperationException in Liferay 6.2 GA2
我有一个在 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)。我可以确认,当我拥有 true 时,此代码有效。问题已解决,但我仍然遇到此问题。我还尝试实现该挂钩解决方法,但该接口似乎在 GA2 中发生了变化。
此外,当我使用以下代码获取首选项存储时,store() 无一例外地执行,但似乎它访问的值与我在 post 开头使用代码获得的首选项不同.
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;
}
有什么建议吗?
我无法确认界面是否已更改。我没有完全测试,但 LPS-42458 中提到的解决方法对我有效,没有编译器错误。当您在那个被覆盖的服务包装器上修复导入时,请确保选择正确的 SystemException,因为 Liferay 令人困惑地有两个。 com.liferay.portal.kernel.exception.SystemException
需要为我编译代码
我有一个在 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)。我可以确认,当我拥有 true 时,此代码有效。问题已解决,但我仍然遇到此问题。我还尝试实现该挂钩解决方法,但该接口似乎在 GA2 中发生了变化。
此外,当我使用以下代码获取首选项存储时,store() 无一例外地执行,但似乎它访问的值与我在 post 开头使用代码获得的首选项不同.
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;
}
有什么建议吗?
我无法确认界面是否已更改。我没有完全测试,但 LPS-42458 中提到的解决方法对我有效,没有编译器错误。当您在那个被覆盖的服务包装器上修复导入时,请确保选择正确的 SystemException,因为 Liferay 令人困惑地有两个。 com.liferay.portal.kernel.exception.SystemException
需要为我编译代码