Liferay:用户特定的portlet首选项

时间:2012-03-15 13:56:56

标签: java liferay portlet vaadin

我有一个Portlet,其中将Portlet添加到页面的管理员必须对其进行配置(执行一些数据库配置以便Portlet正常工作)。这是在只有管理员可以看到的首选项(编辑模式)中完成的。到目前为止它运行良好,管理员完成首选项后,所有用户都可以看到Portlet。我只有一个问题:用户的个人价值被其他用户覆盖等等。所以我在Liferay论坛上发现如何使Portlet保存其用户特定的偏好。它可以工作,但如果我将Portlet配置为管理员,那么只有我可以看到工作的Portlet,其他用户只能看到未配置的Portlet。有没有办法在编辑模式下将Portlet配置为管理员,以便Portlet适用于所有用户并保留Liferay的用户特定Portlet首选项功能?

2 个答案:

答案 0 :(得分:3)

您必须了解偏好的范围。

要么将它们设置为门户网站,这意味着基本上所有用户都使用相同的PortletPreferences实例,

或者您将它们设为用户特定的,每个用户都有自己的实例。

因此,您不能将管理员设置的部分首选项设置为门户网站范围,而其他部分用户则无法存储用户数据。

根据您是否希望稍后以管理员身份更改它们,您有多种选择:

如果没有,则在portlet.xml中定义首选项的默认值。

如果是,那么你必须将它们扩展到门户网站并将用户的数据存储在其他地方(例如数据库)。

如果您需要存储大量数据,第二种解决方案会更好,因为首选项被序列化为XML并作为文本存储在一列中。例如。在oracle数据库中,您最多只能使用4000个字符。

答案 1 :(得分:0)

我认为你可以使用liferay的自定义“配置模式”(portlet标题栏中的小扳手图标)来实现。然后可以使用编辑模式存储特定于用户的首选项。