如何使用和存储用户首选项

时间:2016-10-05 08:11:47

标签: java jsp spring-mvc websphere-portal

我对portlet开发很陌生,我想知道如何为每个用户存储首选项。我使用的是WebSphere 8.5 Portal Server,Spring 4.3.2和RAD v9.5。

目前我正在使用PortletPreferences将数据存储在我的Controller.java中,如下所示:

@ActionMapping(params = "action=saveUserPref")
public void saveUserSettings(ActionRequest req, @RequestParam("radio") String color) throws ReadOnlyException, ValidatorException, IOException {
    PortletPreferences pref = req.getPreferences();
    pref.setValue(accountService.getUsername()+"_fontcolor", color);
    pref.store();
}

并在我的.jsp中获得这样的偏好:

<div style="color:<%=renderRequest.getPreferences().getValue(renderRequest.getPortletSession().getAttribute("username")+"_fontcolor",
                "black")%>;">

我在一些帖子中读到这种方法有效,但它不是保存用户偏好的最简洁方法,因为如果你有大量的用户,这将变得非常慢。

现在我正在寻找一种快速的方法来保存并获得偏好,即使是大量的用户。现实世界中最佳实践解决方案是什么?

1 个答案:

答案 0 :(得分:1)

即使在一些100k用户范围内,我也从未见过这是一个性能问题。 Portlet首选项应该用于特定于portlet的首选项,如果它们要通过多个portlet共享,则存储它们的更好位置是像ldap这样的用户存储。如果您使用ldap portal为您处理缓存。您还可以使用数据库作为Portal的一部分并在数据库中存储用户属性,它们来自PUMA的用户对象的一部分。

对于portlet首选项,我建议对它们进行缓存,这样您就不必每次都进入门户层。

最后,特定于portlet的首选项,保存到特定于用户的portlet首选项,放在像ldap这样的用户存储中,放在一边或类似于使用自己的数据库的portlet服务。